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 […]

2. masaki - 2009-12-11

バッファ管理のプラグインを探してるときに見つけさせて頂きました
Projectなんかを起動してると少し無駄になってしまう気もしますが
場所もとらずにスマートでいいですね

過去の記事に何ですが、強調表示とは buftabs.vim内にある
:let g:buftabs_active_highlight_group
の事でしょうか?

:highlight で表示されるものを値に入れてやれば表示してくれますね
let g:buftabs_active_highlight_group=”vimTodo” など
(的違いでしたらごめんなさい)

3. nase - 2009-12-13

masakiさん、コメントありがとうございます。返信が遅くなりすみません。強調表示の機能は、たしかこの記事の投稿後に実装された気がします。私もすでに確認済みだったのですが、追記しておけばよかったですね。でもコメントしていただいたおかげで助かりました。

4. ゲスト - 2010-1-4

バージョンが新しくなっているので、カスタマイズする場所も多少変わりましたね。
一番目のファイル名省略のカスタマイズは、let l:name = fnamemodify(bufname(l:i), “:t”)を変更することで何とかなりました。
二番目のカスタマイズについては、g:buftabs_listが無くなってしまって、変更箇所がわからなかったので、.vimrcに無理矢理set statuslineを書くことで何とかなっています。
でも、できればプラグイン本体に書き込みたいところです。

5. nase - 2010-1-5

情報ありがとうございます。バージョンアップは結構さぼっているので、こういった情報は助かります。参考にさせていただきます。プラグイン本体に手を加えるより、.vimrcに書いたほうがバージョンアップは楽ですね。


*Comments and trackbacks will appear after it is approved by the administrator.