viを使ってみよう -Vol. 3-
皆様こんにちは。tamです。
引き続き「vi(vim)」の使い方についてお話したいと思います。
前回はファイル保存と検索についての話をしました。
今回は文字の置換についてのお話です。
以下の置換コマンドは「移動モード」で行って下さい。
「:s/ア/ヤ/」[Enter]
[Enter]キーを押下するとカーソルのある行の「ア」という文字列が「ヤ」に置換されます。
では以下の文章の場合はどうなるでしょう?
「:s/ア/ヤ/」[Enter]
…ヤレヤレ。色んな意味で何か違います。
実はデフォルトでは一致した最初の文字列だけが置換されるんです。
カーソルのある行に「ア」が2回以上あっても最初の1回しか置換が行われないのです。
すべて置換するには
「:s/ア/ヤ/g」[Enter]
※最後に「g」を付けます。
これでよし。
カーソルのある行で一致した文字列はすべて置換させることができました。
それではファイル全体を一気に置換したい場合はどうすればいいでしょう?
「:%s/ア/ヤ/g」[Enter]
こうすることでファイル全体で一致した文字列全部を一気に置換することができます。
次の文章で試してみましょう。
「:%s/ア/ヤ/g」[Enter]
「!!」
大変なことになりました。
「イタリヤン」でもなければ「ドリヤ」でもありません。
こんな時は…
「:%s/ア/ヤ/gc」[Enter]
「c」を付けることで一致したケースすべてで確認ができるようになります。
これで安心してサイゼリヤでドリアを食べられますね。
今日のまとめ
「:s/ア/ヤ/」[Enter] カーソル行の最初の「ア」を「ヤ」に置換
「:s/ア/ヤ/g」[Enter] カーソル行のすべての「ア」を「ヤ」に置換
「:%s/ア/ヤ/g」[Enter] ファイル全体のすべての「ア」を「ヤ」に置換
「:%s/ア/ヤ/gc」[Enter] ファイル全体のすべての「ア」を「ヤ」に1つずつ確認しながら置換