← Vim道場

書き換える

消してから入力し直す、という2手を1つにまとめたのが c です。範囲の指定の仕方は d とまったく同じで、消したあとそのまま入力できる状態になります。入力を終えるときは Esc です。

第2章 文字を直すレッスン 8 / 36

なぜ d と i を分けずに c があるのか

cwdw のあと i を押すのとほぼ同じですが、まったく同じではありません。dw は次の単語の手前まで(後ろの空白まで)消すのに対し、cw は単語の末尾までしか消しません。つまり ce と同じ動きです。

単語を差し替えるときに後ろの空白まで消えてしまうと、入力後にもう一度空白を打ち直すことになります。cw がこの特例を持っているのはそのためで、Vimの中でも珍しい「使われ方に合わせた例外」です。

入力を終えるキー

入力中は Esc でノーマルモードに戻ります。ノーマルモードに戻って初めて、u での取り消しが「その入力ひとかたまり」を単位として効くようになります。

Esc が遠いキーなので、jjCtrl-[ を代わりに割り当てる人も多くいます。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$行末まで書き換え
cc1行を書き換え
Esc入力を終える

関連記事

レッスン一覧へ戻るキーの逆引き一覧検定を受ける