Làm mới danh sách bộ đệm


29

Sau khi tôi làm việc trong một dự án một thời gian, tôi bắt đầu thấy những khoảng trống lớn giữa các số bộ đệm liên tiếp. Điều này là do bộ đệm ở giữa chúng bị xóa sổ vì nhiều lý do. Thật không may, điều này có thể khiến bạn khó xử khi nhảy đến một bộ đệm cụ thể hoặc chọn một loạt bộ đệm sau khi nhập :ls. Có cách nào để đánh số lại tất cả các bộ đệm đang mở, bắt đầu từ một, mà không mở lại tất cả các tệp không?

Câu trả lời:


21

Không (không phải không xóa bộ đệm).

Vim không hỗ trợ gán số bộ đệm thủ công hoặc sắp xếp lại bộ đệm một khi bạn mở chúng. Triết lý của nó là mỗi bộ đệm có một mã định danh được cố định trong suốt vòng đời của bộ đệm đó (trong phần trợ giúp :ls, nó lưu ý rằng "mỗi bộ đệm có một số duy nhất. Số đó sẽ không thay đổi ...").

Bạn có thể sử dụng danh sách đối số, mặc dù. Đặt tất cả các bộ đệm mở vào danh sách đối số, xóa tất cả các bộ đệm nổi bật, sau đó mở mọi thứ trong danh sách đối số. Các lệnh sau sẽ thực hiện điều đó:

  • :argdel * (xóa danh sách đối số hiện có)
  • :bufdo argadd % (đối với mỗi bộ đệm, hãy thêm đường dẫn bộ đệm vào danh sách)
  • :1,1000bd (xóa bộ đệm từ 1 đến 1000; có lẽ có cách tốt hơn để làm điều này)
  • :argdo e (đối với mỗi đối số, chỉnh sửa đối số đó)

Điều này sẽ để lại cho bạn một bộ đệm trống bổ sung mà vim mở khi bạn xóa tất cả các bộ đệm trước đó, nhưng đó là một xấp xỉ hợp lý của chức năng bạn muốn. Bạn chỉ có thể :bdthêm bộ đệm.


1
Câu trả lời của bạn nói không, nhưng có vẻ như điều đó rất tốt!
aharris88

(Tôi có nghĩa là "không" theo nghĩa là bạn không thể làm điều đó mà không mở lại các tập tin). Nó thực sự đánh số lại từ 1 cho bạn mặc dù? Tôi nghĩ rằng nó đã làm khi tôi lần đầu tiên thử nó, nhưng bây giờ tôi thấy nó không đánh số lại cho tôi?

Vâng, nó gia hạn cho tôi.
aharris88

Vâng, tôi chỉ là ngu ngốc, tôi tìm thấy sai lầm của tôi.

"mỗi bộ đệm có một mã định danh được cố định trong suốt vòng đời của bộ đệm đó" thực sự là phiên!

14

"Các số đệm trở nên điên rồ" Hãy cho tôi biết về điều đó! Đến cuối ngày, tôi dễ dàng hơn 100 bộ đệm. Nhưng may mắn thay, như bạn có thể thấy trong hình ảnh động này, bạn đã tabhoàn thành tên đệm.

Lượt truy cập: b se <Tab>

Vì vậy, mặc dù bạn không thể đánh số lại bộ đệm, bạn vẫn có thể nhảy xung quanh một cách dễ dàng.

Tôi không biết nếu nó rõ ràng từ hình ảnh động, nhưng "hoàn thành tab" không giống như hoàn thành tab dòng lệnh. Nó giống như một "thay thế tab giải quyết mơ hồ". Có nghĩa là tại dòng lệnh tôi sẽ phải gõ sctabsau đó setabnhưng ở đây vim thực hiện tìm kiếm 'se' và thay thế nó bằng kết quả khớp đầu tiên (và duy nhất). Nếu tôi đã gõ, testtabnó sẽ khớp với ' tabGener_test_data.py' và sau đó tabmột lần nữa sẽ khớp với 'scripts / setup_test_data.sh' và sau đó một lần nữa sẽ quay vòng trở lại, v.v.

Vấn đề là bạn có thể có thói quen gõ chỉ :b <minimum amount of unambiguous characters>tabđể chuyển đến tài liệu bạn muốn. Tôi nghĩ điều này thậm chí còn tốt hơn so với việc ghi nhớ "Bộ đệm của tôi là 1: foo 2: bar 3: vv", đó là cách tôi thường làm khi tôi còn là một người mới.


7

Bạn có thể sử dụng vim-hãng hàng không. Plugin này có một hành vi có thể khắc phục sự cố của bạn:

Xem dòng 470-479 trong hãng hàng không.txt

Điều này sẽ không thay đổi số bộ đệm, nhưng bạn có thể chọn bộ đệm từ trái sang phải theo số hàng trong tabline. Đây là thiết lập của tôi cho hãng hàng không ở .vimrc:

"set airline 
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2

let mapleader=","

let g:airline#extensions#tabline#buffer_idx_mode = 1

nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9

Dòng tab của tôi: Dòng tab của tôi


kinh ngạc! Tôi thích nó :)
Blasco

Không phải là câu trả lời cho câu hỏi nhưng nó vá vấn đề với các số đệm điên. Chỉ là một đề xuất để chỉ hiển thị bộ đệm: switch_buffers_and_tabs=1buffer_idx_mode=0
caligari

6

Theo tài liệu, số lượng bộ đệm không bao giờ thay đổi

    Each buffer has a unique number.  That number will not change,
    so you can always go to a specific buffer with ":buffer N" or
    "N CTRL-^", where N is the buffer number.

Cách duy nhất tôi có thể nghĩ để đánh số lại bộ đệm là khởi động lại vim.


0

Câu hỏi cũ, nhưng vì điều này xuất hiện ở đầu trong tìm kiếm google, tôi sẽ để nó ở đây để tìm kiếm trong tương lai. Như Bruno đề xuất, một công cụ tìm mờ hỗ trợ danh sách bộ đệm là cách để đi. Cá nhân tôi sử dụng và giới thiệu fzf-vim . Nó cung cấp lệnh :FZFBuffers, trông giống như thế này:

nhập mô tả hình ảnh ở đây

Số bộ đệm được hiển thị ở bên trái trong trường hợp bạn cần chúng, nhưng với công cụ tìm mờ, bạn có thể không bao giờ cần sử dụng lại chúng. Chỉ cần nhớ một phần của tên tệp và nó thường là 2-5 lần nhấn phím. Cá nhân, tôi đã ánh xạ lệnh này tới tổ hợp phím và việc chuyển đổi giữa các bộ đệm gần như ngay lập tức đối với tôi!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.