← Vim道場

まとめて置換する

同じ語をファイル全体で置き換えるなら、1つずつ直すより置換コマンドが確実です。書き方は :s/置換前/置換後/ の1本で、どこを対象にするかを頭に、どこまで置き換えるかを末尾に足して調整します。

レッスン 16 / 17

4つの部品でできている

置換コマンドは :[範囲]s/[置換前]/[置換後]/[フラグ] の形です。範囲を省くと現在行、% ならファイル全体、1,10 のように行番号を書けばその範囲になります。

フラグの g は「その行のすべて」、i は大文字小文字を区別しない、c は1つずつ確認しながら置き換える、という意味です。c を付けると置き換えるたびに確認を求められるので、範囲が広いときの保険になります(この練習ページでは c は扱っていません)。

置換前は正規表現

置換前に書くものは単なる文字列ではなく正規表現です。.* はそのままだと特別な意味を持つので、文字そのものとして探したいときは \. のように打ち消します。

逆に、これを使うと :%s/\<old\>/new/g のように「単語としての old だけ」を狙えます。単純な文字列置換では oldName の一部まで巻き込んでしまうので、この書き方を知っておくと事故が減ります。

置換とドットコマンドの使い分け

すべてを機械的に置き換えてよいなら置換が確実です。置き換えたい箇所とそのままにしたい箇所が混ざっているときは、検索して . で1つずつ直すほうが安全です。

置換した結果が思っていたのと違ったら u で戻せます。範囲の広い置換ほど、実行前に / で検索して当たり具合を見ておくと安心です。

このレッスンで扱うキー

キー動き
:s現在行を置換
gその行のすべてを対象に
%ファイル全体を対象に

関連記事

レッスン一覧へ戻る