Vimの置換コマンドの使い方
コードを書いていると, 文字列を書き換えたいと思うことがあると思います. そんなときにとても便利なのが, Vimの置換コマンドです. このページでは, 全体置換, 1行置換, 範囲置換, 検索した単語の置換の方法について解説します.
置換コマンドまとめ
詳しい解説に入る前に, 簡単に置換コマンドをまとめたいと思います.
コマンド | 動作 |
---|---|
:%s/old/new/g | ファイル上の全ての"old"を"new"に置換 |
:s/old/new/g | カーソルの行の全ての"old"を"new"に置換 |
:10,20s/old/new/g | 10~20行目の全ての"old"を"new"に置換 |
:'<,'>s/old/new/g | ビジュアルモードで選択中の範囲の全ての"old"を"new"に置換. " '<,'> "の部分は, 範囲を選択中に":"を押すと自動的に出ます. |
全体置換
では, 全体置換の流れを説明します. 全体置換を行うときは, カーソルはどこにいても良いです. そこで,
- :を押して, コマンドモードに入ります
- %s/old/new/g と打ちます
- エンターを押す
これだけです. これでテキスト内のoldがnewになります.
下の例では, %s/red/orange/gとすることで, テキストのredをorangeに変更しています.

実際の流れは, こんな感じです. 2行から10行に増やすところは, 8@aと入力しています.
ちなみに, マクロを記録させているときは, 左下に記録中という表示がでます.
1行置換
1業置換の時には, 次のようにします.
- 置換したい行にカーソルを合わせます
- :を押して, コマンドモードに入ります
- s/old/new/g と打ちます
- エンターを押す
下の例では, 1行目から5行目にカーソルを移し, そこでs/red/orange/gとコマンドを打っています.

範囲置換
最後に範囲置換の説明をします.
- 置換したい範囲をビジュアルモードで選択します.
- :を押して, コマンドモードに入ります
- この時, コマンドモードは:'<,'>と入力された状態で始まります
- s/old/new/g と打ちます
- エンターを押す
下の例では, 5行目から7行目を選択して, その範囲のredをorangeに置換しています.

ちなみに, 行はビジュアルモードで選択しなくても, 行番号で指定することもできます. 例えば, 上の例と同じことをするなら, コマンドモードに入って, 5,7s/red/orange/gと打てば良いです.
検索した単語を置換する
検索した単語をそのまま置換することもできます. このとき, 検索した単語を再入力することなく置換でき, 非常に便利です.
- 置換したい単語を検索します. 下の例では, *を使用してカーソル下の単語を検索しています.
- コマンドモードに入り, %s//new/gと打ちます.(この時, 置換したい単語, つまり検索した単語の部分は省略することができます.)
- エンターを押す
下の例では, redという単語を*コマンドで検索し, orangeという単語に変えます. コマンドは, %s//orange/gとしています.
