書き換える
消してから入力し直す、という2手を1つにまとめたのが c です。範囲の指定の仕方は d とまったく同じで、消したあとそのまま入力できる状態になります。入力を終えるときは Esc です。
なぜ d と i を分けずに c があるのか
cw は dw のあと i を押すのとほぼ同じですが、まったく同じではありません。dw は次の単語の手前まで(後ろの空白まで)消すのに対し、cw は単語の末尾までしか消しません。つまり ce と同じ動きです。
単語を差し替えるときに後ろの空白まで消えてしまうと、入力後にもう一度空白を打ち直すことになります。cw がこの特例を持っているのはそのためで、Vimの中でも珍しい「使われ方に合わせた例外」です。
入力を終えるキー
入力中は Esc でノーマルモードに戻ります。ノーマルモードに戻って初めて、u での取り消しが「その入力ひとかたまり」を単位として効くようになります。
Esc が遠いキーなので、jj や Ctrl-[ を代わりに割り当てる人も多くいます。Ctrl-[ は設定なしで最初から Esc と同じ働きをします。
cc はインデントを残す
cc は行の中身を消して挿入モードに入りますが、autoindent が有効なら行頭のインデントは残ります。深くネストした行を書き直すときに、字下げを打ち直さずに済みます。
dd してから O で開き直すのと結果は似ていますが、cc のほうがキーが少なく、消した内容がレジスタに残るのでやり直しも簡単です。
c は繰り返しと相性が良い
同じ書き換えを何か所かで行うとき、cw で1か所直しておくと、次の場所では . を1回押すだけで同じ書き換えが再現されます。消す操作と打ち直す操作が c という1つの変更にまとまっているためです。
dw のあと i で打つやり方だと、Vimからは削除と挿入という別々の変更に見えるので、. では削除しか繰り返されません。c を使う実質的な理由はここにあります。ドットの繰り返しは第3章で扱います。
s と S も同じ仲間
s は1文字消して挿入モードに入るので cl と同じ、S は行の中身を消して挿入モードに入るので cc と同じです。同じ動きに別名が付いているだけなので、覚えやすいほうを使えば構いません。次のレッスンで実際に押して確かめます。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| cw | 単語1つ分を書き換え |
| c$ | 行末まで書き換え |
| cc | 1行を書き換え |
| Esc | 入力を終える |