第三者プラグインを使用せずにVIMで単語を交換する

第三者プラグインを使用せずにVIMで単語を交換する

特殊文字や句読点を持たない文字と数字のみを含むファイルがあると仮定すると、VIMを使用して隣接することもそうでない場合もある2つの単語をどのように置き換えることができますか?

以下を試しましたが(すべての「Tom」を「Jerry」に置き換えます)、明らかな理由で機能しません。

​:%s/トム/ジェリー/g​ :%s/ジェリー/トム/g

ありがとうございます!

答え1

おそらくこのような中間変数を使用できます。

​:%s/Tom/XX9G235a65/g​ :%s/Jerry/Tom/g :%s/XX9G235a65/Jerry/g

答え2

これには2つのバリエーションがあります(両方を使用します)。:help sub-replace-expression条件付き演算子と辞書照会をそれぞれ使用して、次のように面倒です。

:substitute/\<\(Tom\|Jerry\)\>/\=submatch(0) ==# 'Tom' ? 'Jerry' : 'Tom'/g
:substitute/\<\(Tom\|Jerry\)\>/\={'Tom':'Jerry', 'Jerry':'Tom'}[submatch(0)]/g

これにより、@MichaelDurrantの回答などの仲介者は必要ありません。

関連情報