2010-02-10 88 views
15

我一直認爲vim的功能非常強大,直到我想擺脫列表中的緩衝區並將其重用於其他功能。舉例來說,如果我有如何在VIM中重新分配緩衝區編號?

 
1 "f1.h" 
2 "f2.h" 
3 "f3.h" 
4 "f1.cpp" 
5 "f2.cpp" 
6 "f3.cpp" 

,我想更換f1.h - f3.h別的東西,但在相同的緩衝序列:

 
1 "n1.h" 
2 "n2.h" 
3 "n3.h" 
4 "f1.cpp" 
5 "f2.cpp" 
6 "f3.cpp" 

我無法弄清楚如何去做吧。我可以做「1,3bd」並刪除緩衝區1-3,甚至是「1,3bw」並將其清除,但是如果不重新啓動vim,就沒有辦法重用這些數字。 http://vim.wikia.com/wiki/Vim_buffer_FAQ的vim緩衝區常見問題似乎證實了這一點。

但我不想相信,VIM真的有此限制,是真的沒有辦法從VIM內做到這一點?

回答

6

您不能在同一會話中重新分配緩衝區號。你最好的選擇是環顧vimscript的替代品。

一個,處理分揀到最近使用的文件(可以刪除緩存)緩衝區探險家是Buffer Explorer/Browser

有迎合他們的不同作者的需求上vim.org其他緩衝切換腳本的負載。或者你也可以用自己的映射推出自己的產品。

我想出了這個Django的。

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

它給了我快兩/三按鍵進入相對20個標準命名的文件到一個應用程序目錄。你可以在這些方面爲你的項目想出一些東西。

我的映射是\1,\2,\3等,所以數字範例仍然存在。

我也被映射爲\vr的〜/ .vimrc\br〜/ .bashrc中

最重要的事情是可以而且應該是一個非常有效的方法。

+0

你的\ 1,\ 2,\ 3繪圖腳本指向我正在尋找的答案,如果我沒有看到更好的東西,我會接受它。如果這種方法被系統地擴展爲以所需的順序爲緩衝區中的所有文件創建映射,那麼這對於通過緩衝區號切換到任何文件是一個可接受的選擇,特別是如果與列出文件的腳本一起使用在相同的映射數字序列中。 – 2010-02-11 18:13:04

1

我推薦使用的標籤,而不是(從VIM 7)。你可以用tabm自由移動它們並用tabetabnew打開新的。另外,更明顯的是發生了什麼。您也可以使用-p(IIRC)打開一堆選項卡來啓動vim。

+1

感謝您的建議,但我更喜歡緩衝區數量超過選項卡的原因之一是我經常一次處理數十或數百個文件。在給定的會話中,我開始通過緩衝區號記住經常使用的文件,並快速在它們之間來回切換。這看起來不像標籤那麼容易。 我懷疑這也是爲什麼vim試圖維持緩衝區號碼的持久性,但是如果我不得不重新加載一塊緩衝區(比如包含文件),我喜歡讓它們保持在頂部。這是我想解決的問題。 – 2010-02-10 21:43:12

2

這裏有一個偷懶的方法做(並不需要學習新的東西):無論你喜歡的工作

  • 您的會話保存到當前工作目錄或 文件:
:mksession Session.vim 
  • 編輯Session.vim。查找打開的緩衝區列表(以badd開頭的行)。

  • 重新排列您喜歡的線條。

  • 關閉vim。使用-S標誌和會議文件

  • 啓動VIM:

$> gvim -S Session.vim 

您的緩衝區將依次在你把它們的順序重新編號。