2012-07-06 16 views
6

Vimは非常に生産的なエディタで、毎日使っていますが、タブ間の移動には時間を要することが分かりました。vimでタブを列挙するには?

別のタブに切り替えるときは、よくgtまたはgTを複数回繰り返します。 Vimは必要なタブに到達するためのより良い方法を提供します - n + gtnはタブ番号です。しかし、それを使用するには、最初にタブ番号を数える必要があります。あなたが十数個のタブを開くと、すぐに退屈になります。

タブを列挙するといいですね。ファイル名の前にある各タブ上の単一の数、このような何か:

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

は、私は設定を編集したり、いくつかのプラグインを使用してこれを行うにはVimを設定することは可能であると思います。

これを達成する方法はありますか?

+1

ViMでタブを開くことができますか?毎日あなたはViMで新しい何かを学ぶ – Shahbaz

答えて

5

vimのコンソールモードでタブのラベルを設定するのに、tablineオプションを使用できます。 :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

+0

ああ、それは追加する必要があります。私は答えにそれを入れます –

2

あなたはgvimを使用している場合:

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

タイプ:help tabline:help guitablabelの続きを読むに。

文書にはfunction MyTabLine()があります。

+0

ありがとうございますが、私はターミナルエミュレータでvimを使っています。 – lambdas

+0

'set tabline'を試してください – kev

関連する問題