Vimでバッファなどに関する各種情報を表示してみる

バッファなどに関する各種情報を表示してみる。

function! s:BufInfo()
  echo "\n----- バッファに関する情報 -----"
  echo "bufnr('%')=" . bufnr('%') . "	// 現在のバッファ番号"
  echo "bufnr('$')=" . bufnr('$') . "	// 最後のバッファ番号"
  echo "bufnr('#')=" . bufnr('#') . "	// 直前のバッファ番号?(仕様がよくわからない)"
  for i in range(1, bufnr('$'))
    echo  "bufexists(" . i . ")=".bufexists(i)
    echon " buflisted(" . i . ")=".buflisted(i)
    echon " bufloaded(" . i . ")=".bufloaded(i)
    echon " bufname(" . i . ")=".bufname(i)
  endfor
  echo "// bufexists(n)=バッファnが存在するか"
  echo "// buflisted(n)=バッファnがリストにあるか"
  echo "// bufloaded(n)=バッファnがロード済みか"
  echo "// bufname(n)=バッファnの名前"

  echo "\n----- ウィンドウに関する情報 -----"
  echo "winnr()="    . winnr()    . "	// 現在のウィンドウ番号"
  echo "winnr('$')=" . winnr('$') . "	// 最後のウィンドウ番号"
  echo "winnr('#')=" . winnr('#') . "	// 直前のウィンドウ番号?(仕様がよくわからない)"
  for i in range(1, winnr('$'))
    echo "winbufnr(" . i . ")=".winbufnr(i) . "	// ウィンドウ" . i . "に関連付くバッファ番号"
  endfor

  echo "\n----- タブページに関する情報 -----"
  echo "tabpagenr()="    . tabpagenr()    . '	// 現在のタブページ番号'
  echo "tabpagenr('$')=" . tabpagenr('$') . '	// 最後のタブページ番号'
  for i in range(1, tabpagenr('$'))
    echo 'tabpagebuflist(' . i . ')='
    echon tabpagebuflist(i)
    echon "	// タブページ" . i . "に関連づくバッファ番号のリスト"
  endfor
  for i in range(1, tabpagenr('$'))
    echo  'tabpagewinnr(' . i . ')=' . tabpagewinnr(i)
    echon " tabpagewinnr(" . i . ", '$')=" . tabpagewinnr(i, '$')
    echon " tabpagewinnr(" . i . ", '#')=" . tabpagewinnr(i, '#')
  endfor
  echo "// tabpagewinnr(n)     =タブページnの現在のウィンドウ番号"
  echo "// tabpagewinnr(n, '$')=タブページnの最後のウィンドウ番号"
  echo "// tabpagewinnr(n, '#')=タブページnの直前のウィンドウ番号?(仕様がよくわからない)"

endfunction
command! -nargs=0 BufInfo call s:BufInfo()

コマンドを実行してみると、

:BufInfo

下記のような結果が表示される。

----- バッファに関する情報 -----
bufnr('%')=2    // 現在のバッファ番号
bufnr('$')=2    // 最後のバッファ番号
bufnr('#')=1    // 直前のバッファ番号?(仕様がよくわからない)
bufexists(1)=1 buflisted(1)=1 bufloaded(1)=1 bufname(1)=test.vim
bufexists(2)=1 buflisted(2)=0 bufloaded(2)=1 bufname(2)=/usr/share/vim/vim73/doc/eval.txt
// bufexists(n)=バッファnが存在するか
// buflisted(n)=バッファnがリストにあるか
// bufloaded(n)=バッファnがロード済みか
// bufname(n)=バッファnの名前

----- ウィンドウに関する情報 -----
winnr()=1       // 現在のウィンドウ番号
winnr('$')=2    // 最後のウィンドウ番号
winnr('#')=2    // 直前のウィンドウ番号?(仕様がよくわからない)
winbufnr(1)=2   // ウィンドウ1に関連付くバッファ番号
winbufnr(2)=1   // ウィンドウ2に関連付くバッファ番号

----- タブページに関する情報 -----
tabpagenr()=1   // 現在のタブページ番号
tabpagenr('$')=1        // 最後のタブページ番号
tabpagebuflist(1)=[2, 1]        // タブページ1に関連づくバッファ番号のリスト
tabpagewinnr(1)=1 tabpagewinnr(1, '$')=2 tabpagewinnr(1, '#')=2
// tabpagewinnr(n)     =タブページnの現在のウィンドウ番号
// tabpagewinnr(n, '$')=タブページnの最後のウィンドウ番号
// tabpagewinnr(n, '#')=タブページnの直前のウィンドウ番号?(仕様がよくわからない)