質問: コードを書いていると、最初は`n`とか、いい加減な変数名をつけていたけれど、やっぱり途中で`count`とか、もう少しマシな名前にすりゃよかった、と思うことがあります。 この場合、単純に `s/n/count/g` では、大抵うまくいきません。`print`が`pricountt`になるなど、多くの関係のないものまで、置換されてしまうからです。 例えば、マッチ範囲を限定するvimの正規表現方言の、`\zs`, `\ze` を利用して `s/(^|\H)\zsn\ze($|\W)/count/g` とすると、前後に英数字があるものはマッチしなくなりますが、これを毎回打つのはあまりに面倒です。 こういった場合に便利な、うまい方法はないでしょうか。 なお、言語仕様により付けられる変数名は変わってきますが、ここではとりあえず「英数字とアンダースコアのみからなる。ただし、1文字目には数字は来ない」ルールに対応できればいいものとします。
回答: 単語の開始を表す `\<` と単語の終了を表す `\>` を使うと単語検索ができるようです。 でもって、ご質問のような場面では目の前に対象の単語があるでしょうから、そこにカーソルを載せた状態で `*` を押すと前述のメタ文字を使って単語検索が行われます。そしてこのまま `:%s//count/g` と検索文字列を省略して置換することで、今単語検索したものをそのまま置換できます。 1文字目にも数字を許容してしまいますが、まあ多分問題ないように思います。 参考 Vimの置換コマンドの使い方 | Memo on the Web