vim を使っていて、複数の行を一括で書き換えたいケースが出てきます。
たとえば、
1: DATA_1="aaa"
2: DATA_1="BBB"
3: DATA_2="CCC
4: VALUE_3="DDD"
5: VALUE_4="EEE"
というファイルがあったとします。
(先頭の 1: や 2: は行番号です)
2行目と3行目の先頭の DATA を VALUE に書き換えたい場合、
:2,3s/^DATA/VALUE/
とか書けばできますが、書き換えのエリアが広くなると、いちいち行番号をメモしておくのも面倒です。
そこで Vim のマーク機能を使うと便利です。
まず、変更を開始したい行へカーソルを移動し、m[a-zA-Z]
と打ちます。
たとえば、a という名前のマークをつけるのであれば ma
と打ちます。
これは表示されません。
次に変更を終了したい行へカーソルを移動し、
:'a,.s/^DATA/VALUE/
と入力すると、a とマークされた行 ('a) ~ ここ (.) までの行を変更することができます。
書き換えだけでなく削除 (d) やコピー (yank) などでも利用できます。