Vim で直前の検索パターンを部分的に再利用する
問題
Vim で直前の検索パターンを部分的に再利用したい.直前の検索パターンをそのまま利用するのであれば,
/foo
で検索の後
:%s//bar
で :%s/foo/bar/
と同等になる.そうではなくて,直前に使った検索パターンを再利用して置換のパターンを作りたい.
/,\n\s*}
で何気なく javascript で残念なアレの存在を確かめてから,滑らかに
:%s/\zs,\ze\n\s*}//
へと移行して,object を開いて書くときの最終行にくっついてる ,
を取り除きたい. q/
を使えばやや楽に /\zs,\ze\n\s*}
を検索してから :%s///
できるが,そこにふた手間使いたくはない.
解決
Last search pattern register を使う (:h quote/
).
このレジスタ "/
には直前に検索した pattern が入っていて,hlsearch
などもこれを使っているらしい.これを使えば
:%s/<C-r>/
と打てば
:%s/,\n\s*/
と同等になる.めでたい.
参考
Vim - General - Reuse search pattern? に載ってた.
別の解決法
(25 Aug 2014 追記)
「何気なく使う検索から置換への滑らかな移行」なら上のが良いと思われるが,「置換パターンを実験したりしつつ定めたい」のであれば osyo-manga/vim-over を使うのがいいかもしれない.作者による解説記事は http://d.hatena.ne.jp/osyo-manga/20131105/1383664737.