2009/02/07

打造自己的VIM: 多檔編輯TabBar

看圖比較快,如下圖,[Tabbar]就是上面那個檔案列表視窗。Tabbar的操作包含了:
  • 切換至下個視窗 Ctrl-Tab
  • 切換至上個視窗 Ctrl-Shift-Tab
  • 切換至第n個視窗(n為數字0-9) Alt-n
  • 用滑鼠雙點Tab名,像下圖的[2:iliad.h]
安裝方式請至[他們的網頁]看一下唄。




此外,我在用他們的plugin時,有時會不小心在-TabBar-的window內,按到切換檔案的鍵(像是剛剛提到的Ctrl-Tab, Ctrl-Shift-Tab...),降會要被切換到的檔案顯示在-TabBar- window中,若是想避免這種情形,其實是可以加一個自動指令及函式在vimrc裡,這個指令會在當window切換時自動被執行,加法如下:

autocmd! BufEnter * nested call Test()
func! Test()
if bufname("%") == "-TabBar-"
wincmd j ; 跳到下面的視窗
endif
endfunction


但是這樣寫會造成滑鼠雙點Tab名切換視窗的功能失效,要用的人自己斟酌一下。

(2009/2/9 新增)

在使用TabBar還有一個情形也是十分困擾我的,每次下:bd刪除buffer時,時常下個被顯示的buffer不會按照順序,舉例來說,假使我現在看第4個buffer,若是我用:bd將它將它關掉,下個被打開的視窗通常不會按照一定的規律跳到第3或第5個buffer,這個壞處是有時要關一個以上的buffer,不能一直:bd的按,把大於某個號碼的視窗全部關掉。所以我加了一個小函式及快速鍵在vimrc,它能在關掉buffer後,一定跳到前一個buffer,程式如下。

map <C-F4> <ESC>:call CloseTab()<CR>
func! CloseTab()
let s:buf_nr = bufnr("%")
echo s:buf_nr
exec ":Tbbp "
exec ":bdelete ".s:buf_nr
endfunction


(2009/3/11 新增)

TabBar裡其實有一些設定很少被提到,但是卻很實用,若需要更多的說明可以自己打開tabar.vim來看看,大概在100出頭行的地方,亦或是直接在code裡的某處。我這裡提一些看起來比較有用到的。

g:Tb_MaxSize (Default = 1)
有時開的檔案太多,TabBar視窗會容不下那麼多檔案同時在一行內被顯示,但是使用者(我)會希望它可以分成2行被顯示,這時只要將這個值設定2就行。

g:Tb_TabWrap (Default = 0)
若開啟檔案數超過一行可顯示且g:Tb_MaxSize又設成大於1時,超過一行可顯示的字會折到下一行而造成最後一個檔案標籤斷了,若設成1則它不會讓標籤斷掉,會直接讓行尾標籤放到下一行行首。

g:Tb_SplitBelow (1 = below, 0 = above(Default))
將TabBar視窗放在上面or下面

g:Tb_VSplit (0:top, 1:left)
將TabBar放在上面or左邊


我自己是設定這些值
let g:Tb_MaxSize = 2
let g:Tb_TabWrap = 1

1 comment:

Powentan的世界 said...

非常實用的tabbar簡介,一些設定用起來非常好用!!