スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

バッファ操作方法まとめ

  • ページ: ScriptSample
  • カテゴリー: バッファ・ウィンドウ
  • 投稿日: 2010-01-01 21:39:34 (金)

メッセージ

バッファ操作関数

bufexists(10)           バッファ番号10のバッファが存在するか判定
buflisted(10)           バッファ番号10のバッファがリストに表示されているか判定
bufloaded(10)           バッファ番号10のバッファがロードされているか判定

bufname("%")            カレントバッファの名前
bufname(3)              バッファ3番の名前
bufname("file2")        バッファ名が"file2"にマッチするバッファの名前

bufnr("%")              カレントバッファの番号
bufnr("#")              オルタネートバッファの番号
bufnr("file2")          バッファ名に"file2"を含むバッファの番号(* ? , などは特別な意味を持つ。詳細は後述)

存在するすべてのバッファの番号を取得する

let buflist = filter(range(1, bufnr("$")), 'bufexists(v:val)')

カレントタブページのウィンドウに表示されているバッファの番号を取得する

let buflist = map(range(1, winnr("$")), 'winbufnr(v:val)') 

バッファを削除や表示する関数はないので、コマンドを使う。

" 表示
exe "buffer " . bufnr("hoge")
" 削除
exe "bdelete " . bufnr("hoge")

bufname, bufnr の特殊文字

bufname, bufnr の引数で * ? , などはファイル名のパターンと同じく特殊な意味を持ちます。
詳しくは

:h bufname()
:h file-pattern

を参照してください。

そのため、「*Scratch*」という名前のバッファの番号を取得しようとして

bufnr('*Scratch*')

とすると、「*Scratch*」が存在すればその番号が返りますが、存在しないとき「AnotherScratch?」のようなバッファもマッチしてしまいます。
そこで、指定した名前と完全にマッチするバッファ番号を取得するには、次のような関数を使った方がいいです。

function! GetBufferNumberByName(name, ignorecase)
  let buflist = filter(range(1, bufnr("$")), 'bufexists(v:val)')
  for bufnr in buflist
    if (a:ignorecase && bufname(bufnr) ==? a:name) || bufname(bufnr) ==# a:name
      return bufnr
    end
  endfor
  return -1
endfunction

TODO: リスト操作方法、辞書操作方法をまとめる。


  • 「bufname, bufnr の特殊文字」を追加 -- 2010-01-06 18:52:11 (水)



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1287d)