jump to navigation

Vimバッファリストの決定版? buftabs.vim

2008-01-27 15:24 Posted by
nase
in : プログラミング

bed_cat2.jpg

これまでバッファの一覧表示にはtabbar.vimを使っていました。

現在のバッファをリストの中で強調表示できたりして便利なプラグインではあったんですが、ウィンドウを分割して表示していると、たまに表示がくずれてしまうので困っていました。(リストがおかしな位置に表示されたり、なぜか二重に表示されたり)

で、常々この問題を何とかしたいと思っていたところ、昨日見つけたのが以下のプラグイン。

こいつはなんと、ステータスライン上にバッファの一覧を表示してくれます。この発想は無かった!

buftabs.vimの使い方

buftabs.vimの使い方は簡単。ダウンロードしてプラグインディレクトリに入れるだけで有効になります。

ドキュメントにはバッファを移動するためのキーバインド設定として、ファンクションキーを使う方法とCtrl+矢印キーを使う方法がそれぞれ紹介されています。

buftabs.vim自体の設定は以下の2つだけ。

"バッファタブにパスを省略してファイル名のみ表示する(buftabs.vim)
let g:buftabs_only_basename=1
"バッファタブをステータスライン内に表示する
let g:buftabs_in_statusline=1

g:buftabs_in_statuslineを設定しなかった場合はコマンド入力部分にバッファの一覧が表示されるのですが、ここは何かとメッセージなどが表示されて書き換えられてしまうので、ステータスラインに表示しておくのがお勧め。

上記設定をした上での表示はこんな感じ。

buftabvim_s.jpg
buftabs.vim(現在のバッファが「[ ]」で囲まれる)

これなら、いくらウィンドウを開いても表示がくずれる心配はありませんね。(しかもtabbar.vimより2行分も省スペース。すばらしい。)

ちょこっとカスタマイズ

上のスクリーンショットでは、実はスクリプトに2点ほど修正を入れたものが表示されています。

まずは148行目付近。

リスト項目の10文字目以降は省いて表示するようにしています。(やたらファイル名の長いファイルの対策と、一覧性の向上のため)

"let l:list = l:list . fnamemodify(bufname(l:i), ":t")
let l:list = l:list . matchstr(fnamemodify(bufname(l:i), ":t"), '^.*\%<10v') . "~"

もう一つは189行目付近。

これまでステータスラインに表示していたエンコードや改行種別の表示をbuftabsでも表示するように追加。

"set statusline=\ %{g:buftabs_list}%=%l,%c\ 
set statusline=%{g:buftabs_list}%=\ %m%r%h%w%y%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}\ %l,%c\ %P

以上。

minibufexpl.vimやtabbar.vimで表示くずれにお悩みであれば、こいつでLife Changingしちゃってみてください。

ちなみに、ステータスライン内でもstatuslineの「#」や「*」を使ってハイライトが指定できるようですが、ウィンドウのアクティブ/非アクティブによっても表示を切り替えなければならず残念ながら私には設定方法がよく分かりません。

強調表示に挑戦してみたい人は:h statuslineで確認してください。(できればアクティブなバッファを強調表示したいところです。頑張ればできるのかな・・・)



Comments»

1. vimで使いやすいファイル&バッファエクスプローラーを探し求めて: - 2008-3-31

[…] ナレッジエース - Vimバッファリストの決定版? buftabs.vim […]


*コメントおよびトラックバックは、管理者の承認後に表示されます。