← 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 | その行のすべてを対象に |
| % | ファイル全体を対象に |