2012-07-06 23 views
6

Vim是一款非常高效的編輯器,我喜歡每天都使用它,但是我發現在選項卡之間移動需要比預期更多的時間。如何列舉vim中的標籤?

當我想切換到另一個標籤時,我經常多次重複gtgT。 Vim提供了一個更好的方式來達到所需的選項卡 - n + gt,其中n是製表符號。但要使用它,你應該首先計算標籤號。如果您打開一打標籤,它很快就會變得無聊。

我認爲這將是很好的枚舉選項卡。在文件名,東西前每個標籤像這樣在一個號碼:

1 Readme | 2 main.c | 3 main.h | 4 process.h 

我希望這是可以配置的vim編輯配置或使用一些插件來做到這一點。

有沒有辦法實現它?

+1

你可以在ViM中打開標籤?每天你都會從V​​iM學到新東西 – Shahbaz 2012-07-06 16:50:27

回答

5

您可以使用tabline選項來設置vim控制檯模式下選項卡的標籤。 請參閱:h setting-tabline的幫助,該幫助還顯示了一個非常基本的簡單示例,您可以根據需要對其進行調整。對於你想要的,我會用這樣的東西:

fu! MyTabLabel(n) 
let buflist = tabpagebuflist(a:n) 
let winnr = tabpagewinnr(a:n) 
let string = fnamemodify(bufname(buflist[winnr - 1]), ':t') 
return empty(string) ? '[unnamed]' : string 
endfu 

fu! MyTabLine() 
let s = '' 
for i in range(tabpagenr('$')) 
" select the highlighting 
    if i + 1 == tabpagenr() 
    let s .= '%#TabLineSel#' 
    else 
    let s .= '%#TabLine#' 
    endif 

    " set the tab page number (for mouse clicks) 
    "let s .= '%' . (i + 1) . 'T' 
    " display tabnumber (for use with <count>gt, etc) 
    let s .= ' '. (i+1) . ' ' 

    " the label is made by MyTabLabel() 
    let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' 

    if i+1 < tabpagenr('$') 
     let s .= ' |' 
    endif 
endfor 
return s 
endfu 
set tabline=%!MyTabLine() 
+0

謝謝,這正是我一直在尋找的!但是'set tabline =%!MyTabLine()'應該添加到示例的最底部,否則整個事情將不起作用。 – lambdas 2012-07-07 03:02:18

+0

噢,是的,應該添加。我會把它放到答案中 – 2012-07-07 08:13:19

2

如果您正在使用gvim

set guitablabel=(%N)\ %t\ %M 

類型:help tabline:help guitablabel閱讀更多。

文檔中有一個function MyTabLine()

+0

謝謝,但是我正在使用vim和終端仿真器。 – lambdas 2012-07-06 17:02:18

+0

嘗試'設置tabline' – kev 2012-07-06 17:02:56