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.