Vim - danh sách động của bộ đệm mở trong cửa sổ


22

Tôi đã nghiên cứu một vài cách để duy trì danh sách các bộ đệm mở trong Vim và một số trong số chúng rất tốt, nhưng dường như không có cách nào trong số chúng hoạt động theo cách tôi muốn. Rất có thể là không có gì giống như những gì tôi muốn tồn tại và không thể hỏi được.

Tôi đã sử dụng NERDTree trong GVim và tôi thích ý tưởng đưa thông tin vào một cửa sổ bên trái thanh mảnh. Tôi đã sắp xếp một sơ đồ tiện dụng cho việc tôi muốn môi trường của mình trông như thế nào:

|--------|---------------------------------------|
|        |                                       | 
|        |                                       | 
|NERDTree|           Windows                     | 
|        |                                       | 
|        |                                       | 
|        |                                       | 
|--------|                                       |
|        |                                       | 
|        |                                       | 
|  List  |                                       | 
|   of   |                                       | 
|  Open  |                                       | 
| Buffers|                                       | 
|        |                                       | 
|        |                                       | 
|--------|---------------------------------------|

Vì vậy, câu hỏi của tôi là: Có cách nào để kích hoạt vim-plugin hoặc plugin để duy trì danh sách các bộ đệm hiện đang mở và chọn / chỉnh sửa / đóng từ danh sách đó, bên trong một cửa sổ tương tự như NERDTree không?

Tôi hiểu rằng cách tiếp cận này có thể không phù hợp với cách làm của Vim và nếu bạn cảm thấy thiếu một cái gì đó về cách quản lý nhiều tệp trong một phiên Vim, vui lòng để lại nhận xét với các đề xuất!


Tôi cũng đang tìm kiếm để có một danh sách bộ đệm bên dưới (hoặc ở trên) khung nerdtree. Tôi sẽ cố gắng nhớ cập nhật bài đăng này nếu tôi tìm thấy một giải pháp tốt (nhưng cảm ơn vì đã hỏi dù sao)
Eric Drechsel

Câu trả lời:


7

Bạn đã tìm kiếm kho plugin của vim.org chưa? Có hàng tá plugin chuyển đổi bộ đệm cho bạn lựa chọn như BufferGator hoặc SelectBuf . Ngoài ra, hầu hết trong số chúng được biên soạn trong một danh sách đẹp trên wiki Vim .


Như bạn đã nói ở phần cuối của câu hỏi, loại hệ thống đó không phải là sở thích của mọi người.

Tôi ghét phải có tất cả các menu, nút và danh sách này hoặc mở mọi lúc: một danh sách các bộ đệm mở chỉ hữu ích khi bạn thực sự cần phải chuyển sang bộ đệm khác, để lại một danh sách mở như vậy có vẻ như lãng phí không gian đối với tôi . Điều tương tự cũng có thể được áp dụng cho các dòng trạng thái tăng áp.

Tôi sử dụng cùng một plugin để chuyển đổi một cách kỳ quặc giữa các bộ đệm và khám phá một cách kỳ lạ hệ thống tệp xung quanh tệp tôi hiện đang chỉnh sửa. Được gọi với ,f(tệp) hoặc ,b(bộ đệm), cửa sổ sẽ biến mất khi tôi hoàn thành. Hoàn hảo. Có các plugin tương tự khác , hãy thử tất cả nếu bạn thích ý tưởng đó.

CHỈNH SỬA

Tôi cảm thấy bắt buộc phải thêm một GIF hoạt hình của CtrlP trong hành động, chuyển đổi bộ đệm:

Chuyển đổi bộ đệm bằng CtrlP

KẾT THÚC

Bản địa :sb <Tab>cũng khá gọn gàng nhưng kém gợi cảm. Nó không hỗ trợ kết hợp mờ nhưng nó có một số lợi thế lớn: nó được tích hợp và nó hoạt động như vậy :e <Tab>, :vs <Tab>v.v.


Cảm ơn lời đề nghị của bạn. Có vẻ như BufferGator và SelectBuf đều ít nhất gần với chức năng mà tôi đang theo đuổi, mặc dù họ có thể cần một số điều chỉnh để mọi thứ diễn ra. Tôi chắc chắn đánh giá cao sự lo lắng về việc lãng phí dung lượng, nhưng với trường hợp sử dụng hiện tại của tôi, tôi có một phiên bản GVim mở hàng giờ liền với nhiều tệp được mở cùng một lúc, nhảy giữa chúng khi cần. Đối với những trường hợp này, một danh sách bộ đệm liên tục là vô cùng hữu ích. Tuy nhiên, tôi sẽ dành chút thời gian để tìm hiểu về các cách tiếp cận Vim điển hình hơn để quản lý bộ đệm.
asfallows

Tôi tưởng tượng rằng bạn làm việc trên một màn hình lớn. Dù bạn chọn hệ thống nào, bạn vẫn sẽ cần 1. chuyển sang danh sách đệm, 2. chọn bộ đệm, 3. nhấn một phím để nhảy tới nó xem danh sách bộ đệm đã hiển thị hay chưa. Do đó, sử dụng bộ chuyển đổi bộ đệm "theo yêu cầu" cũng hiệu quả như giữ một danh sách bộ đệm mở và nó tiết kiệm không gian.
romainl

Tôi chắc chắn đánh giá cao lý do đó, đó là lý do tại sao tôi không quá e ngại về khả năng cấu hình chính xác mà tôi mô tả ở đây có thể không thực hiện được. Ưu điểm chính duy nhất mà danh sách bộ đệm liên tục có là cần 0 lần nhấn phím để kiểm tra xem bộ đệm nào đang mở, một thông tin tôi thấy có giá trị và cũng thấy mình rất tệ trong việc lưu giữ bộ nhớ ngắn hạn. (Và có, tôi làm việc trên một màn hình khá lớn.)
asfallows

@romainl, bạn đã sử dụng lệnh vimrc nào để ánh xạ ,bđể tìm kiếm bộ đệm với ctrlp?
tuyết rơi

1
@snowbound, FWIW Tôi đã ngừng sử dụng CtrlP hoặc bất kỳ plugin tương tự nào khác cách đây một thời gian. Dù sao, lệnh của tôi là nnoremap ,b :CtrlPBuffer<CR>.
romainl

5

Tôi rất có thể giới thiệu MiniBufExplorer . Xem thêm một thay thế cho xe buýt nhỏ?

Ảnh chụp màn hình


Cảm ơn bạn đã trả lời - Tôi đã tìm thấy MiniBufExplorer và có vẻ như nó cực kỳ tốt với những gì nó làm, nhưng nó không đáp ứng các điều kiện tôi mô tả về cách tôi muốn quản lý bộ đệm. Nếu hóa ra không có cách nào tốt để làm những gì tôi đang cố gắng hoặc tôi quyết định rằng đó không phải là cách đúng đắn để làm điều đó, MBE khá cao trong danh sách của tôi cho những điều cần thử tiếp theo.
asfallows

1
Điều kiện duy nhất không được đáp ứng là danh sách nằm bên trái. Tôi đồng ý, MiniBufExplorerở trên cùng (nơi mà nó không lãng phí nhiều không gian như bên trái). Hoặc có thể tôi hiểu nhầm yêu cầu của bạn.
Marco

Với thiết lập hiện tại của tôi, việc có danh sách các bộ đệm ở bên trái như được mô tả thực sự là một sự cải thiện về sử dụng không gian, bởi vì NERDTree luôn mở nhưng không phải lúc nào chúng ta cũng hoàn toàn theo chiều dọc. Chia sẻ không gian đó với một danh sách bộ đệm sẽ tốt đẹp. Điều đáng chú ý là đây là cách tôi sử dụng GVim và tôi sẽ không muốn một cột bên trái liên tục nếu tôi đang sử dụng Vim trong bảng điều khiển. Hầu hết các sử dụng giao diện điều khiển của tôi về Vim là "tập tin mở, hãy nhanh chóng chỉnh sửa, vim gần"
asfallows

1

Có một cách để làm chính xác điều đó bằng cách sử dụng plugin winmanager . Trong ảnh chụp màn hình này, tôi kết hợp cả NERDTree và MiniBufExpl (github: techlivezheng / vim-plugin-Minecraftufexpl, cam kết mới nhất atm 349a9fbb) trên cùng một phân chia dọc và chuyển đổi nó với F4. Về lý thuyết, giải pháp này sẽ hoạt động cho mọi kết hợp plugin khác.

Ví dụ về .vimrc của tôi

"{{{Cấu hình MiniBufExpl
hãy để g: miniBufExplVSplit = 20 "mở theo chiều dọc
hãy để g: miniBufExplSplitToEdge = 0 "mở so với cửa sổ trước (NERDTree)
"}}} Cấu hình MiniBufExpl

"{{{Cấu hình winmanager
"đăng ký bổ trợ
hãy để g: NERDTree_title = 'Cây NERD'
hãy g: MiniBufExpl_title = 'MiniBufExpl'

"thiết lập bố cục
hãy g: winManagerWindowLayout = 'NERDTree | MiniBufExpl'

"Trình xử lý cho NERDTree
chức năng! NERDTree_Start ()
    thực hiện 'NERDTree'
kết thúc

"Trình xử lý cho MiniBufExpl
chức năng! MiniBufExpl_Start ()
    thực hiện 'MBEOpen'
kết thúc

"ánh xạ để chuyển đổi phần tách thành F4
nmap <F4>: WMToggle
"}}} cấu hình winmanager

Các vấn đề:

  • NERDTree không sử dụng bộ đệm mà winmanager tạo nhưng tự mở ...
  • ... do đó, bộ đệm winmanager không được sử dụng
  • MiniBufExpl không tự cập nhật chính xác khi nhảy giữa các bộ đệm

Hành vi tôi đã đạt được là không hoàn hảo nhưng đó là một khởi đầu tốt.

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.