Vim でバッファごとに検索パターンを保持する
この記事は Vim Advent Calendar 2012 285日目の記事になります。
/ で検索を行った際にその検索パターンはレジスタに保持され、次に n 等を使用した際にその検索パターンが使用されます。
この検索パターンは Vim で1つのみ保持しているのですが、試しにバッファごとで保持するようなスクリプトを書いてみました。
[ソース]
augroup buffer-local-search-pattern autocmd! autocmd BufLeave * let b:last_pattern = @/ autocmd BufEnter * let @/ = get(b:, "last_pattern", @/) augroup END
こんな感じ。
やっていることはバッファローカル変数で検索パターンを保持し、バッファに入った際にレジスタを書き換えています。
これでバッファごとに検索パターンが保持され、他のバッファで検索していても別のバッファでは検索パターンがそのままに使用する事が出来ます。
ただ、違うバッファで同じ検索パターンを続けて検索したい場合もあるので一概にどちらがいいとはいえないと思います。
ここら辺をうまい具合に使い分けてみたいんですけど何かいい方法はないものか。