← Vim研究所

ESCキーの代わりになるキー(Ctrl-[ と Ctrl-c の違い)

2019-05-23 公開 ・ 更新: 2026-08-09

ノーマルモードに戻るたびに右手を伸ばしてEscを押していました。この移動が地味に手の流れを止めていることに気づいてから、ホームポジションを崩さずに済む代替キーを探すようになりました。

目次(8項目)
キーこれだけ覚える
Ctrl-[Escの完全な代替。進行中の操作もそのまま確定する
Ctrl-c強制キャンセル。進行中の操作が取り消されることがある
jk / jjインサートモード専用の自作Esc代替(任意設定)

2つの代替キー

Ctrl-[   " Escの単純な代替
Ctrl-c   " 強制キャンセル

どちらもノーマルモードに戻る点は同じですが、動作の細部が異なります。

Ctrl-[ はEscの完全な代替

Ctrl-[Escとまったく同じ動作をする、正真正銘の代替キーです。ホームポジションから小指を動かすだけで届くため、Escキーまで手を伸ばすより移動距離が短くて済みます。多くのVimmerがjjjkのようなインサートモード用マッピングを別途作る一方で、ノーマルモードへの復帰自体にはCtrl-[を使う人も多くいます。

ただしこの方法はCtrlが押しやすい位置にあることが前提になります。標準配列のようにCtrlが左下端にあると、Escへ手を伸ばす代わりに小指を伸ばすだけで、移動距離があまり減りません。CapsLockをCtrlに入れ替える設定や、キーボード自体の選び方はVimmerがキーボード選びで重視すべきポイントにまとめています。

Ctrl-c は「キャンセル」の意味合いが強い

Ctrl-cも一見同じように見えますが、実行中のコマンドを強制的に取り消す性質があります。たとえばブロックビジュアルモードで3行選択し、$Aで各行末に文字を追記する操作を例にすると、確定に使うキーで結果が変わります。

入力Ctrl-[で確定Ctrl-cで確定
aaa
bbb
ccc
aaa_X
bbb_X
ccc_X
aaa_X
bbb
ccc

Ctrl-[なら全3行に反映されますが、Ctrl-cだと1行目にしか反映されません。挿入操作の確定処理そのものが打ち切られるため、2行目以降への反映が行われずに終わってしまいます。

使い分けの目安

状況おすすめ
普段のモード復帰Ctrl-[
操作自体をキャンセルしたいCtrl-c

「脱Esc」がVim習熟の通過儀礼のように語られることもありますが、その真偽はさておき、ホームポジションを維持できるCtrl-[を知っておいて損はありません。

コマンドラインモードでも同じキーが使える

Ctrl-[はコマンドラインモードでもEscの代替として機能します。検索や置換コマンドを入力中にやめたくなったときも、同じキーでキャンセルできるので、モードをまたいで統一した操作感で使えます。

インサートモード専用の代替マッピング

さらに手を伸ばす距離を減らしたいなら、インサートモードに限定してjkjjのような連続入力をEscとして扱うマッピングを自作する人も多くいます。

inoremap jk <Esc>

この手のマッピングは通常のタイピングでjkと続けて打つ機会が少ない言語ほど相性がよくなります。日本語入力中に頻発するようなら、別のキーの組み合わせを選んだほうが安全です。

要点:単純な代替ならCtrl-[、進行中の操作を打ち切りたいならCtrl-cを使います。さらに手を伸ばしたくないならインサートモード専用のjk系マッピングも検討できます。
使ってみて

Ctrl-cで済ませていた頃、ビジュアルモードでの挿入操作が思った通りに反映されず戸惑ったことがあります。Ctrl-[に切り替えてからその問題が起きなくなり、両者の違いを体感として理解できました。今では用途に応じて自然に使い分けられるようになっています。

まとめ

Ctrl-[Ctrl-cは似ているようで意味が異なります。普段の復帰はCtrl-[、操作の取り消しが目的ならCtrl-cと覚えておくと事故を防げます。

関連記事

← Vim研究所 トップへ戻る