Hatena::ブログ(Diary)

備忘録 beta

2010-12-16

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と全く同じ挙動をする

thincathinca 2010/12/17 02:14 <C-c> では InsertLeave イベントが発行されないという違いもあります。
<C-c> に慣れてしまっている人は <C-c> を <ESC> にマッピングすると良いですね。
inoremap <C-c> <ESC>
ちなみに私も <C-[> 派です :)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close