Vimスクリプト(bufname)

今回はbufnameとbufnrを使います。バッファ名、番号を取得する関数です。
使い方はヘルプにあります。

:h bufname
bufname({expr})
		戻り値はバッファの名前。バッファ名はコマンド ":ls" で表示され
		るものと同様。
		{expr}が数値ならば、その番号のバッファ名が返される。0は現在の
		ウィンドウの代替バッファを意味する。{expr}が文字列ならば、バッ
		ファ名に対してファイル名マッチング |file-pattern| を行うパター
		ンとなる。このマッチングは常に、'magic' をセットし 'cpoptions'
		を空にした状態で行われる。複数マッチしてしまった場合には空文字
		列が返される。
		"" や "%" は現在のバッファを意味し、"#" は代替バッファを意味す
		る。

		~省略~

ふむふむ。では:lsを確認してみます。

%が現在のバッファってことなので、現在表示されているバッファは、”[無名]”ですね。
bufnameは現在のバッファの番号を指定する必要があるっぽいので、
さきに、bufnrを使ってみます。
ヘルプの確認。

:h bufnr
bufnr({expr} [, {create}])
  結果はバッファの番号。バッファ番号はコマンド ":ls" で表示され
  るものと同様。{expr}の使い方は前述の |bufname()| を参照。バッ
  ファが存在しない場合-1が返される。ただし、{create}が与えられて
  0でないときは、バッファリストに載せない新しいバッファを作成し
  その番号を返す。
  bufnr("$")は最後のバッファを意味する: >

bufnrに”[無名]”を指定して、バッファ番号を確認してみます。

:echo bufnr("[無名]")

-1が返ってきてしまいました。指定の仕方が違うんでしょう。

%が現在のバッファを表すので、%で確認してみます。

:echo bufnr("%")

1が返ってきました。

ということで、bufnameに戻ります。
bufnameで1を指定して、バッファの名前を取得してみましょう。

:echo bufname(1)

何も表示されませんでした。

コメント

タイトルとURLをコピーしました