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
としか書かれていない。(お前が編集しろと言うのはおいといて)
しかしEscとCtrl+cは挙動が違うので、代わりに使うのはやめましょう(言い過ぎ)という話。
ノーマルモードへの移行時の前置数値の扱い
インサートモード時にEscまたはCtrl+cを押すとノーマルモードへ移行するが、明確な挙動の違いがある。- 5 i - Esc
- 5 i - Ctrl+c
この2つを試すと挙動の違いが確認できる。
前者(Esc)は5個の[ - ]が入力されるが、後者は1個の[ - ]しか入力されない。
これは、Escではノーマルモードに復帰し(コマンド入力が完了し)、数字の回数繰り返されたのに対し、Ctrl+cではインサートモードを失敗(強制終了)し、ノーマルモードに移行したと認識されたため、数字がキャンセルされ働かなかったためである。(多分ね)
まとめ
とはいっても、ほとんどの場合Ctrl+cは期待通りの挙動をしてくれるはず。現時点でCtrl+cに慣れている人はあまり気にしないのが賢明かもしれない。・・・ちなみに私はCtrl+[派
こちらはEscと全く同じ挙動をする