消して、元に戻す
移動ができるようになったら、次は消す操作です。1文字消す x、1行消す dd、そして消しすぎたときに戻す u。この3つが分かれば、もう怖がらずに触れます。最後に dd と p を組み合わせた行の入れ替えまでやります。
dd は削除ではなく切り取り
Vimの削除系の操作は、消した内容をレジスタと呼ばれる置き場に必ず残します。つまり dd は他のエディタで言う Ctrl-X(切り取り)に近く、直後に p を押せばそのまま貼り付けられます。
「消す」と「移動する」が別の操作ではなく、dd と p の組み合わせで行の入れ替えになるのはこのためです。行を上下に動かしたいときの定番として指に入れておくと便利です。
u で戻れるから思い切って触れる
u は直前の変更を1つ取り消します。押すたびに1つずつ遡れるので、操作を間違えたときは連打すれば元の状態まで戻れます。戻しすぎたときは Ctrl-r でやり直しです。
覚えたてのうちは「変なキーを押して壊すのが怖い」と感じますが、u があるので実際には壊れません。分からないキーを押してみて、想定と違ったら u、というのが一番早い覚え方です。
d は単独では動かない
d を1回押しても何も起こらず、画面の右下に d とだけ表示されます。これはVimが「どこまで消すか」の指定を待っている状態です。もう一度 d を押せば「1行」の意味になり dd として成立します。
ここに前のレッスンで覚えた移動のキーを渡せるのがVimの面白いところで、dw なら単語1つ分、d$ なら行末までが消えます。この組み合わせは次のレッスンで扱います。
u が戻す単位
u は1キー分ではなく、1つの変更を戻します。挿入モードで10文字打ってから Esc を押した場合、u 1回でその10文字がまとめて消えます。ノーマルモードに戻るまでが1つの変更として数えられるためです。
長い文章を打っている途中で区切りを入れたいときは、Esc を挟んでから続きを打ちます。あとで少しずつ戻せるようになります。
消した行は上書きされていく
dd した内容は無名レジスタに入りますが、次に別の行を dd すると上書きされます。1行消して、別の場所をもう1行消して、最初の行を貼りたい、という順番だと目的の行はもう残っていません。
ただしVimは1行以上をまとめて消したときに限り、"1 から "9 という履歴も残しています。"1p で1つ前、"2p で2つ前の削除内容を貼り付けられます。レジスタは第4章で扱います。
x と dd の使い分け
x はカーソル位置の1文字、dd は1行です。どちらも数字と組み合わせられて、5x で5文字、3dd で3行という指定になります。数字の付け方は第3章で扱います。
タイプミスを1文字直すだけなら x が速く、行の中身を書き直すなら消してから打ち直すより cc のほうが手数が減ります。cc はこの章の後半で扱います。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| x | カーソル位置の1文字を削除 |
| dd | カーソル行を1行削除 |
| u | 直前の変更を取り消す |
| p | 消した内容を下に貼り付け |