【Vim】文字列置換あれこれメモ

基本

:s/before_str/after_str/

上記コマンドだと、カーソル位置の行にある、最初に合致する文字列しか置換対象にならない。

:s/before_str/after_str/gc

オプションでgを付与すると、その行で最初に合致する文字列だけでなく、それ以降合致する全ての文字列も対象に置換できる。

あと、cを付与すると置換する前に置換してもよいかどうかを確認してくれるようになる。
このとき、いくつか動作を選択することができて、yを押すとその文字を置換して次へ、nを押すとその文字は置換せず次へ、aを押すとすべて置換して終了、qを押すと置換せず終了、lを押すとその文字を置換して終了、といった感じ。

ファイル内全てを対象にして置換したい場合は:%sを使う。

:%s/before_str/after_str/gc

gを付与しないと、各行の最初の文字列だけを対象に置換を行うので注意。

選択範囲のみを対象に置換する

  1. ビジュアルモードで範囲指定
  2. :でコマンドモードに移行(自動的に:'<,'>まで入力される)
  3. 続けて置換するコマンドを打っていく

入力が終わったときには例えば以下のようになる。

:'<,'>s/before_str/after_str/gc

行単位で範囲を指定して置換する

行単位の範囲指定もできる。
例えば以下は5~10行目を対象に置換する。

:5,10s/before_str/after_str/gc