Tôi mở một số tệp trong Vim, ví dụ, đang chạy
vim a/*.php
trong đó mở 23 tập tin.
Sau đó tôi thực hiện chỉnh sửa của mình và chạy hai lần sau
:q
trong đó đóng tất cả các bộ đệm của tôi.
Làm thế nào bạn có thể đóng chỉ một bộ đệm trong Vim?
Tôi mở một số tệp trong Vim, ví dụ, đang chạy
vim a/*.php
trong đó mở 23 tập tin.
Sau đó tôi thực hiện chỉnh sửa của mình và chạy hai lần sau
:q
trong đó đóng tất cả các bộ đệm của tôi.
Làm thế nào bạn có thể đóng chỉ một bộ đệm trong Vim?
Câu trả lời:
Một lời cảnh báo: "w in bw không có nghĩa là viết mà là xóa sổ!"
Thêm từ hướng dẫn sử dụng:
: bd
Dỡ bỏ bộ đệm [N] (mặc định: bộ đệm hiện tại) và xóa nó khỏi danh sách bộ đệm. Nếu bộ đệm bị thay đổi, điều này sẽ thất bại, trừ khi [!] Được chỉ định, trong trường hợp đó thay đổi sẽ bị mất. Các tập tin vẫn không bị ảnh hưởng.
Nếu bạn biết bạn đang làm gì, bạn cũng có thể sử dụng: bw
: bw
Giống như |: bdelete |, nhưng thực sự xóa bộ đệm.
:bwnếu "bạn biết bạn đang làm gì" mà tôi không biết, vì vậy tôi đoán tôi sẽ sử dụng :bd.
:bd) cũng đóng tab. Những gì bạn có thể muốn là :bd n .. [m]hoặc :n,mbdcho các số hoặc phạm vi số cụ thể đóng, điều bạn có thể làm mà không cần nhìn vào bộ đệm
wlà viết tắt của writelệnh theo hướng dẫn sử dụng Vim, ngoài ra không có đề cập đến bất kỳ "xóa sổ" nào. Mô tả của lệnh ( help write) bắt đầu bằng "Ghi toàn bộ bộ đệm vào tệp hiện tại."
wtrong bwlệnh nghĩa là xóa sạch anh ấy không nói về wlệnh. Anh ta đặt cảnh báo này ở đó để mọi người không nghĩ rằng bwlệnh có nghĩa là ghi đệm (mà nó không có nghĩa là xóa bộ đệm.)
Nếu điều này không được làm rõ bởi các câu trả lời trước:
: bd sẽ đóng bộ đệm hiện tại. Nếu bạn không muốn lấy danh sách bộ đệm.
:bdchỉ đóng bộ đệm trong khi (bất kể điều đó có nghĩa là gì) trong khi đó :bwcũng sẽ xóa tất cả các biến và THỰC SỰ loại bỏ nó khỏi lsbộ đệm.
Kiểm tra id bộ đệm của bạn bằng cách sử dụng: bộ đệm
bạn sẽ thấy danh sách các bộ đệm ở đó như
1 a.php
2 b.php
3 c.php
nếu bạn muốn xóa b.php khỏi bộ đệm
:2bw
nếu bạn muốn xóa / đóng tất cả khỏi bộ đệm
:1,3bw
Thay vì duyệt thông số của lệnh: ls và xóa (unload, lau ..) một bộ đệm bằng cách chỉ định số của nó, tôi thấy rằng sử dụng tên tệp thường hiệu quả hơn.
Chẳng hạn, sau khi tôi mở một vài tệp .txt để làm mới ký ức của mình về một số điểm tốt .. sao chép và dán một vài dòng văn bản để sử dụng làm mẫu sắp xếp .. vv Tôi sẽ gõ như sau:
:bd txt <Tab>
Lưu ý rằng chuỗi phù hợp không phải ở đầu tên tệp.
Ở trên hiển thị danh sách các tên tệp khớp với 'txt' ở dưới cùng của màn hình và giữ lệnh: bd ban đầu tôi đã gõ không chạm, sẵn sàng để hoàn thành.
Đây là một ví dụ:
doc1.txt doc2.txt
:bd txt
Tôi có thể sao lưu lại bit 'txt' và nhập tên tệp tôi muốn xóa, nhưng điều này trở nên thực sự tiện lợi là tôi không phải: nếu tôi nhấn phím Tab lần thứ hai, Vim sẽ tự động hoàn thành lệnh của tôi với trận đấu đầu tiên:
:bd doc1.txt
Nếu tôi muốn thoát khỏi bộ đệm đặc biệt này, tôi chỉ cần nhấn Enter.
Và nếu bộ đệm tôi muốn xóa xảy ra là khớp thứ hai (thứ ba .. v.v.), tôi chỉ cần tiếp tục nhấn phím Tab để thực hiện chu trình lệnh: bd của mình thông qua danh sách khớp.
Đương nhiên, phương pháp này cũng có thể được sử dụng để chuyển sang một bộ đệm nhất định thông qua các lệnh như: b ..: sb .. vv
Cách tiếp cận này đặc biệt hữu ích khi tùy chọn Vim 'ẩn' được đặt, vì danh sách bộ đệm có thể nhanh chóng trở nên khá lớn, bao phủ nhiều màn hình và gây khó khăn cho việc phát hiện bộ đệm cụ thể mà tôi đang tìm kiếm.
Để tận dụng tối đa tính năng này, có lẽ tốt nhất là đọc tệp trợ giúp Vim sau đây và điều chỉnh hành vi hoàn thành dòng lệnh Tab sao cho phù hợp nhất với quy trình làm việc của bạn:
:help wildmode
Hành vi tôi đã mô tả kết quả ở trên từ cài đặt sau, mà tôi đã chọn vì mục đích nhất quán để mô phỏng hoàn thành bash:
:set wildmode=list:longest,full
Trái ngược với việc sử dụng số bộ đệm, ưu điểm của phương pháp này là tôi thường nhớ ít nhất một phần của tên tệp đã cho phép tôi nhắm mục tiêu bộ đệm trực tiếp thay vì phải tìm số trước thông qua lệnh: ls.
[EDIT: đây là một đề nghị ngu ngốc từ thời tôi không biết rõ về Vim. Vui lòng không sử dụng các tab thay vì bộ đệm; các tab là "bố cục cửa sổ" của Vim
Có thể chuyển sang sử dụng các tab?
vim -p a/*.php mở cùng một tệp trong tab
gtvà gTchuyển đổi tab qua lại
:q chỉ đóng tab hiện tại
:qa đóng tất cả mọi thứ và thoát
:tabo đóng tất cả mọi thứ trừ tab hiện tại
vim-noxgói từ Ubuntu có hỗ trợ Ruby.
Những người sử dụng plugin điều hướng bộ đệm hoặc cây, như Buffergator hoặc NERDTree, sẽ cần phải chuyển đổi các phần tách này trước khi phá hủy bộ đệm hiện tại - nếu không bạn sẽ gửi phần chia của mình vào wonkyville
Tôi sử dụng:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
Trong đó " NERDTreeToggle" trong danh sách đó giống như gõ :NERDTreeToggle. Bạn có thể sửa đổi chức năng này để tích hợp với cấu hình của riêng bạn.
:bdeletehoặc :bwipeout. Xem câu trả lời của tôi .
Nếu bạn muốn đóng bộ đệm mà không phá hủy bố cục cửa sổ của mình (bố cục hiện tại dựa trên các phần tách), bạn có thể sử dụng Plugin như bbye . Dựa trên điều này, bạn chỉ có thể sử dụng
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
Hoặc chỉ cần tạo một bản đồ trong của bạn .vimrcđể truy cập dễ dàng hơn như
:nnoremap <Leader>q :Bdelete<CR>
Từ tài liệu của plugin :
- Đóng và loại bỏ bộ đệm.
- Hiển thị một tập tin khác trong cửa sổ đó.
- Hiển thị một tệp trống nếu bạn không có tệp nào khác mở.
- Đừng để bộ đệm [không có tệp] vô dụng nếu bạn quyết định chỉnh sửa tệp khác trong cửa sổ đó.
- Hoạt động ngay cả khi một tệp đang mở trong nhiều cửa sổ.
- Làm việc ổn với các trình thám hiểm đệm và tabbars khác nhau.
Từ tài liệu của plugin :
Vim có hai lệnh để đóng bộ đệm:
:bdeletevà:bwipeout. Cái trước loại bỏ tệp khỏi danh sách bộ đệm, xóa các tùy chọn, biến và ánh xạ của nó. Tuy nhiên, nó vẫn còn trong jumplist, vì vậyCtrl-osẽ đưa bạn trở lại và mở lại tệp. Nếu đó không phải là những gì bạn muốn, hãy sử dụng:bwipeouthoặc tương đương với Bbye:Bwipeoutnơi bạn đã sử dụng:bdelete.
vim -o a/*.php(hoặc-Osử dụng cửa sổ dọc) và tránh điều hướng bộ đệm - đây là một phương pháp tuyệt vời chỉ cho một vài tệp, nhưng với 23 tệp, chúng sẽ chỉ có một vài dòng / cột mỗi.