Làm thế nào để đóng bộ đệm mà không đóng cửa sổ?


23

Tôi thường mở một vài cửa sổ và giữ một số bộ đệm mở. Vì MO của tôi trong khám phá bộ đệm là sử dụng các phím tắt nhanh đến :bn:bp, tôi muốn đóng các bộ đệm không cần thiết để đánh lạc hướng bộ đệm của tôi.

Nhưng nỗi đau là, ban hành :bd:bwkết quả là đóng cửa sổ, trong trường hợp tôi có nhiều cái mở. Làm cách nào để đóng (xóa) bộ đệm và giữ nguyên các cửa sổ?

Giải pháp lấy cảm hứng từ câu trả lời của @ peth

:command! BW :bn|:bd#

Nó đơn giản. Không hoạt động tốt chỉ với một bộ đệm mở (tôi có các hành vi khác nhau tùy thuộc vào cách tôi mở tệp) nhưng đó không phải là vấn đề lớn. :)

Câu trả lời:


12

Nó có thể là một nỗi đau, câu hỏi này được đặt ra nhiều lần #vim(Freenode), quá.

Một số người khuyên không nên xóa bộ đệm và chuyển đổi :b partial<Tab>thay vì :bnhoạt động, nhưng không phải là những gì bạn đang hỏi.

Cách tốt nhất tôi biết để làm điều đó là chuyển sang bộ đệm khác và sau đó :bd#, bạn có thể ánh xạ, tất nhiên.

Xem thêm Xóa bộ đệm mà không đóng cửa sổ trên wiki của Vim.


Kịch bản có vẻ là một giải pháp tôi sẵn sàng chấp nhận nếu không có cách chính thức. :)
unperson325680

21

Tôi đã làm hỏng điều này một chút và cuối cùng đã nghĩ ra:

:bp | sp | bn | bd

Đây là phiên bản sao chép / dán để ánh xạ khóa:

:bp<bar>sp<bar>bn<bar>bd<CR>

Hoặc một lệnh cho .vimrc của bạn (gọi bằng: Bd):

lệnh Bd bp | sp | bn | bd

Tôi đã kiểm tra nó một chút công bằng và nó hoạt động ổn định trong các điều kiện khác nhau. Khi được sử dụng trên bộ đệm cuối cùng, nó sẽ để lại cho bạn một bộ đệm trống mới.


3
Tôi mất phần tách nếu tôi đóng bộ đệm mở trong cả hai cửa sổ, chẳng hạn như bộ đệm cuối cùng. +1 vì đơn giản hơn các tập lệnh wikia thành bd mà không đóng cửa sổ .
Leif Carlsen

Tôi đã sử dụng vim-bbye nhưng câu trả lời của bạn đơn giản hơn nhiều và không phụ thuộc vào bất kỳ kịch bản nào. Cảm ơn bạn.
Andrew-Dufresne

4

Một cửa sổ là một khung nhìn vào một bộ đệm. (Xem :help window.) Bạn không thể có một cửa sổ mà không có bộ đệm liên quan. Bạn có thể sử dụng một lệnh như :enewđể thay thế nội dung cửa sổ hiện tại bằng một bộ đệm trống.


Tôi đã mong đợi rằng sau khi xóa bộ đệm, vim có thể chuyển sang bộ đệm khác hoặc mở một bộ đệm mới nếu cần thiết.
unperson325680

@progo, điều đó sẽ yêu cầu một số kịch bản, tức là plugin hoặc ánh xạ đơn giản.
Clint Pachl

2

các bufkill.vim Plugin làm việc là tốt. Tôi thích sử dụng nó với vim-lệnh-w để thêm chức năng và chi tiết (giống như nó sẽ đóng một phần tách nếu đó là bộ đệm cuối cùng hoặc đóng vim nếu đó là bộ đệm / tách cuối cùng).


2

Đây là một giải pháp khác:

map <C-W>o <C-W>n<C-W><C-W><C-W>c

Nhập Ctrl + W sau đó o sẽ lặng lẽ tạo một cửa sổ mới và đóng cửa sổ cũ. Con trỏ được để lại trong cửa sổ mới. Có một số hiệu ứng tích cực:

  1. Kích thước phân chia ban đầu của bạn được bảo tồn.
  2. Một bộ đệm trống được tải trong phần tách mới.
  3. Bộ đệm ban đầu vẫn được tải, sử dụng: bộ đệm để liệt kê nó.
  4. Ctrl + o di chuyển con trỏ đến vị trí ban đầu trong bộ đệm cũ nếu bạn cần quay lại.
  5. Hoạt động tốt ngay cả khi chỉ có một cửa sổ được tải.

1

Tôi nghĩ vấn đề là hầu hết mọi người đều mong đợi bộ đệm và cửa sổ vim là thứ họ không có.

Mọi người có xu hướng nghĩ về một cửa sổ vim là một quá trình độc lập có danh sách bộ đệm riêng, nhưng thật đáng buồn là nó không. Một cửa sổ vim chỉ là một khung nhìn của bộ đệm của nó.
Do đó, rất nhiều vấn đề phát sinh, như vấn đề của bạn hoặc vấn đề mà các cửa sổ khác nhau chia sẻ cùng một danh sách bộ đệm để bạn không thể chỉnh sửa Bộ đệm 1 trong Cửa sổ A và để Cửa sổ B bỏ qua Bộ đệm 1 trong danh sách bộ đệm của nó.

Giải pháp của tôi là mở hai phiên bản của vim, để bạn có thể có loại cửa sổ vim bạn muốn. Nó hoạt động tốt nhất trên ốp lát WMs.


1

Thông thường tôi chỉ mở menu trong khi trên bất kỳ bộ đệm. Điều này sẽ mở menu trên khung bên trái và con trỏ sẽ được kích hoạt ở đó. Vì vậy, tôi chỉ cần chuyển trở lại bộ đệm hoạt động và xóa bộ đệm.

Sau đó tôi có thể mở tập tin khác từ menu.

Bước của tôi là:

:Vex

ctrl + w + w

:bd
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.