Vimにおける Esc と Ctrl-cの違い。

はじめに

一般的なキーボードでは押しにくい位置にあるEscキーの代わりとして用いられているCtrl+c
Wikipediaにも

他のモード中に ESC か Ctrl-[ 、Ctrl-c を押すことでこのモードに移行できる。

http://ja.wikipedia.org/wiki/Vim#.E3.83.8E.E3.83.BC.E3.83.9E.E3.83.AB.E3.83.A2.E3.83.BC.E3.83.89

としか書かれていない。(お前が編集しろと言うのはおいといて)


しかしEscCtrl+cは挙動が違うので、代わりに使うのはやめましょう(言い過ぎ)という話。


ノーマルモードへの移行時の前置数値の扱い

インサートモード時にEscまたはCtrl+cを押すとノーマルモードへ移行するが、明確な挙動の違いがある。

  • 5 i - Esc
  • 5 i - Ctrl+c

この2つを試すと挙動の違いが確認できる。
前者(Esc)は5個の[ - ]が入力されるが、後者は1個の[ - ]しか入力されない。
これは、Escではノーマルモードに復帰し(コマンド入力が完了し)、数字の回数繰り返されたのに対し、Ctrl+cではインサートモードを失敗(強制終了)し、ノーマルモードに移行したと認識されたため、数字がキャンセルされ働かなかったためである。(多分ね)


まとめ

とはいっても、ほとんどの場合Ctrl+cは期待通りの挙動をしてくれるはず。現時点でCtrl+cに慣れている人はあまり気にしないのが賢明かもしれない。


・・・ちなみに私はCtrl+[
こちらはEscと全く同じ挙動をする