Viで置換処理を行うコマンドについて

viを使っていると置換コマンドを使う場合があります。

基本的な使い方は以下のような場合です。



例えばよく使うパターンとして、ファイル内の「置換前テキスト」を「置換後テキスト」に変換する場合のコマンドは次のようになります。(ファイル全文で、確認が毎回入ります。)

:%s/{置換前テキスト}/{置換後テキスト}/gc

オプション説明

:sでコマンドラインモードの「substitude」に移ります。

substitudeとは代入とかいう意味です。(後述参考)

%を付ける場合は、開いているファイルの内容すべてを対象とします。

gはマッチしたテキストすべてを置換します。

cは置換前に、実行してよいか毎回確認するオプションです。




例1:カーソルのある行の最初の一番目に見つかった文字列を置き換える場合
:s/{置換前テキスト}/{置換後テキスト}
例2:カーソルのある行で見つかったすべての文字列を置き換える場合
:s/{置換前テキスト}/{置換後テキスト}/g
例3:スラッシュ(/)が含まれる文字列を置き換える場合

セミコロン(;)で代用しましょう。

:%s;{置換前テキスト};{置換後テキスト};g
  • ケース:ファイル内の文字列{/home/hogehoge/}を{/var/www/}に置き換える場合
:%s;/home/hogehoge/;/var/www/;g
例4:ファイルの行数を指定して文字列を置き換える場合
:開始行,終了行s/{置換前テキスト};{置換後テキスト};g
  • ケース:20行目から80行目までの文字列を置き換える場合
:20,80s/{置換前テキスト}/{置換後テキスト}/g
  • ケース:20行目から最終行(ファイルの最後)までの文字列を置き換える場合
:20,$s/{置換前テキスト}/{置換後テキスト}/g

ポイント:sをつけ忘れないように

置換モードはコマンドモードでsをつけ忘れないようにしましょう。

sとはどういう意味かというと、代入という意味です。


即ちvimの内部処理は、文字列を検索して、代入する(上書き)するという意味です。



人間が使う置き換えという言葉に、vimの「検索」「代入」という2アクションが含まれています。




参考:weblio英和和英

substitute
―【動】
代わりに用いる; 代入する.
・substitute A for B A を B の代わりに用いる
・substitute A by [with] B 《略式》 A に代えて B を用いる
・substitute ax for y in the equation 方程式の y に ax を代入する
・substitute the value in [into] the original equation その値をもとの方程式に代入する
・substitute a folder for the K drive あるフォルダーを K ドライブの代わりにする, あるフォルダーを K ドライブに割り当てる《DOS の subst コマンドの機能》
―【名】
代用品, 代替物.