読者です 読者をやめる 読者になる 読者になる

バッファを表示させてみる

 つい最近までほとんど使わなかったバッファがかなり便利だと言うことを理解しました。splitやvsplitでいろいろ一度表示するのも良いけど、大抵はタブみたいな間隔でバッファを使う方が便利かなと考え方を変えてみたので。

 そして、ちょっと残念だと思ったのが、一覧を見るのに:lsを打ち込まないとならない点。タブ間隔で使うとしたら面倒。常時表示されてる方が絶対便利です。
 という訳で調べてみたところ、buftabs.vimというものが便利らしいということだったので試してみました。

 こちらを参考に...
Vimバッファリストの決定版? buftabs.vim - ナレッジエース


デフォルトではコマンドラインにこのように表示されるみたいです。うーん、コマンドラインだとたまに表示が消えてしまうようです。設定でステータスラインにも表示できるらしいですが、それだとせっかく自分仕様で成形したステータスラインが使えなくなってしまいます。


...ということで、ステータスラインに表示できるようなものを自分で書いてみました。

function! Show_buffer()
  let l:i = 1
  let l:list = ""
  while(l:i <= bufnr('$'))
    let l:list = (bufwinnr(l:i) != -1) ?
          \ l:list . l:i . "$" :
          \ l:list . l:i . ":"
    let l:list = l:list . (bufname(l:i) != "" ?
          \ fnamemodify(bufname(l:i), ":t") : "  ")
    let l:i = l:i + 1
    if l:i <= bufnr('$')
      let l:list = l:list . " "
    endif
  endwhile
  return l:list
endfunction

後は

set statusline=[%{Show_buffer()}]

みたいに記述するだけ。

 バッファを開きすぎるとステータスラインがギュウギュウになっちゃうけど、そのときは:lsで一覧を見ればいいかな。まだまだ改良の余地ありそうだけど、不満点が出てきたら直せばいいや。