23877


コードを書いていると、最初は`n`とか、いい加減な変数名をつけていたけれど、やっぱり途中で`count`とか、もう少しマシな名前にすりゃよかった、と思うことがあります。

この場合、単純に `s/n/count/g`
では、大抵うまくいきません。`print`が`pricountt`になるなど、多くの関係のないものまで、置換されてしまうからです。

例えば、マッチ範囲を限定するvimの正規表現方言の、`\zs`, `\ze` を利用して  
`s/(^|\H)\zsn\ze($|\W)/count/g`
とすると、前後に英数字があるものはマッチしなくなりますが、これを毎回打つのはあまりに面倒です。

こういった場合に便利な、うまい方法はないでしょうか。

なお、言語仕様により付けられる変数名は変わってきますが、ここではとりあえず「英数字とアンダースコアのみからなる。ただし、1文字目には数字は来ない」ルールに対応できればいいものとします。


CC BY-SA 3.0
2016-04-09T15:50:32.607
23876
2016-04-09T16:15:57.180
12269
question
vim 正規表現
変数名や関数名を変更した際、vimで置換する方法


`/\<n\>/`のように`\<`と`\>`を使うと単語の区切りとして認識されます。  
どうでしょうか。


CC BY-SA 3.0
2016-04-09T16:02:10.950
23877
2016-04-09T16:02:10.950
15102
23876
answer


単語の開始を表す `\<` と単語の終了を表す `\>` を使うと単語検索ができるようです。

でもって、ご質問のような場面では目の前に対象の単語があるでしょうから、そこにカーソルを載せた状態で `*`
を押すと前述のメタ文字を使って単語検索が行われます。そしてこのまま `:%s//count/g`
と検索文字列を省略して置換することで、今単語検索したものをそのまま置換できます。

1文字目にも数字を許容してしまいますが、まあ多分問題ないように思います。

参考 [Vimの置換コマンドの使い方 | Memo on the
Web](http://motw.mods.jp/Vim/substitution.html)


CC BY-SA 3.0
2016-04-09T16:15:57.180
23878
2016-04-09T16:15:57.180
8000
23876
answer