消す範囲を指定する
dd で1行消せることは分かりました。Vimが強いのはここからで、d のあとに「どこまで」を移動のキーで渡せます。覚えた移動がそのまま削除範囲の指定になるので、キーの数だけ削除の種類が増えます。
オペレータ + モーション
d のように「何をするか」を決めるキーをオペレータ、w や $ のように「どこまで」を決めるキーをモーションと呼びます。Vimの編集はこの2つの掛け算になっていて、オペレータ3つとモーション10個を覚えれば30通りの操作ができます。
だから前のレッスンで覚えた移動は、そのまま削除・コピー・書き換えの範囲指定として使い回せます。移動のキーを増やすことが、そのまま編集操作を増やすことになります。
D は d$ の短縮形
行末まで消す d$ は使用頻度が高いので、D という1キーの別名が用意されています。同じように C は c$、Y は yy です。
また、オペレータを同じ文字で2回続けると「1行まるごと」の意味になります。dd がそれで、cc や yy も同じ規則です。
dw は行をまたがない
行の最後の単語の上で dw を押しても、次の行の先頭までは消えず、その行の末尾で止まります。w は本来なら次の単語の先頭まで進むモーションなので、そのまま適用すれば改行を巻き込むはずですが、Vimはオペレータと組み合わせたときだけこの例外を設けています。
行をまたいで消したい場合は、次の行に移ってから dd するか、第5章で扱う J で先に行を連結します。
モーションは移動のキーなら何でも渡せる
d の後ろに置けるのは w e $ だけではありません。第1章で覚えた G や f もそのまま使えて、dG はカーソル行からファイル末尾まで、df, は次のカンマまでを消します。d3j のように数字を挟むこともできます。
移動のキーを1つ覚えるたびに、削除・コピー・書き換えの3つが同時に増えるという構造になっています。Vimのキーを丸暗記ではなく組み合わせで覚えられるのはこのためです。
消す範囲に自信がないときは選んでから消す
どこまで消えるか読み切れないときは、第4章のビジュアルモードで範囲を選んでから d を押す方法があります。選択中は反転表示で範囲が見えるので、確認してから消せます。
慣れると d とモーションの組み合わせのほうが速くなりますが、入り組んだ範囲を扱うときは経験を積んだ人でもビジュアルモードを使います。どちらが正しいというものではありません。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| dw | 単語1つ分を削除 |
| de | 単語の末尾まで削除 |
| d$ | 行末まで削除 |