Vim – 全体/行指定/範囲指定で文字を置換する方法【確認しながらの置換も】

midSun31midSun31
IT・デジタル

Vimエディタの特徴の一つは範囲の指定が簡単で柔軟な点です。それは置換の時も同様です。他のエディタで指定の範囲のみ置換する選択肢がなくて困ったことがある方もいるのではないでしょうか。

この記事では、Vimエディタで範囲指定して文字を置換する方法について解説しています。

全体、行指定、範囲指定ぞれぞれの置換方法を紹介するので参考にしてください。Vimエディタのバージョンは8.1を利用しています。

ファイル全体を置換する方法

「%s」の構文を利用することで、現在開いているファイル全体を置換することができます。

  • 全体を置換(同一行の複数ヒットを含む)
    :%s/置換前文字列/置換後文字列/g
    • 複数ヒットしても全て置換するために最後に「g」を付けます。
  • 全体を置換(同一行の複数ヒットを含まない)
    :%s/置換前文字列/置換後文字列/
    • 上記のコマンドは、同一行で置換前文字列が複数ヒットした場合、最初にヒットした文字列のみしか置換できません。

使用例

ファイル内の「public」を「private」に置換したい場合は、次のようにコマンドを入力します。

:%s/public/private/g

ファイル全体の置換が完了すると、完了メッセージが表示されます。

行指定で置換する方法

行を指定で置換するには、カーソル位置を利用した方法と、行番号を指定する方法があります。

  • 現在のカーソル行のみで置換する場合
    「:s」の構文でカーソルがある行数のみ置換することができます。
    :s/置換前/置換後/g

  • 行数を指定して置換する場合
    次のように行番号と「,」「s」を組み合わせて入力することで、行を指定して置換することができます。
    :開始行数,終了行数s/置換前/置換後/g

範囲指定で置換する方法

Vimのビジュアルモードで選択することで範囲を指定して置換することができます。

矩形や一行の特定の部分のみなど、範囲を選択して置換したい場合に使うと効果的です。

  1. 範囲の先頭にカーソルを移動し、「Ctrl」+「v」キーを入力してビジュアルモードに入ります。
  2. カーソルを移動して置換する範囲を選択します。
  3. 「:」を入力してコマンドモードに入ります。この時、コマンドモードは:’と入力された状態で始まります。
  4. 続けて置換のコマンドを入力して「Enter」キーで実行します。
    s/置換前/置換後/g  #追加するコマンド

  5. 以上で特定の範囲に限定して置換することができます。

確認しながら置換する方法

一括置換ではなく一つずつ確認して置換したい場合は、通常の置換コマンドの最後に「c」を入れます。

ファイル全体を確認しながら置換する場合は以下のコマンドになります。

:%s/置換前文字列/置換後文字列/gc

置換コマンドをEnterキーで実行すると確認メッセージが表示されます。

「y(置換をする)」や「n(置換しない)」を入力して、置換位置を一つずつ確認しながら置換を進めることができます。

以上、Vimエディタで全体/行指定/範囲指定により文字を置換する方法でした。

IT・デジタル
Howpon[ハウポン]

コメント