escの代わりにctrl + cを使用して挿入モードを終了すると、viで何かが壊れますか?


15

viを使用する場合、従来のの代わりにCtrl+をC使用して挿入モードを終了できますEsc。後者の代わりに前者に使用することが望ましくない状況はありますか?ベストプラクティス以外のものを壊しますか?


前者を偶然にヒットするのは望ましくありません。エラーのようにType :quit<Enter> to exit Vimなり、Googleに戻る方法を教えてくれました。押すiと、挿入モードに戻ります。
ヌメノン

回答:


9

Ctrl-Cそして、Escでは同じではありませんvi/ vim挿入モードを含むほとんどのモードで。違いはEscトリガーの略語ですが、Ctrl-cそうではありません。これがあなたにとって重要かどうかは、あなた自身またはあなたが使用するプラグインが略語を使用するかどうかに依存します。


で同じことを想定しEsc、意味Ctrl-Cない方が安全であることに注意してくださいvim。この同じサイトの別のは、ブロック挿入モードを終了するときです(ではありませんvi)。


知っておくと良いのですが、私の質問は挿入モードの終了に関するものでした。
MDマーラ

@MDMarra Doh、あなたの質問を読み違えました。挿入モードはまだ異なります。更新された回答を参照してください。
jw013

1
私が対処しなければならなかった最も重要な違いは次のとおりです。ビジュアルブロックモードでの複数行挿入は、CcではなくEscで機能します。
魅惑

4

あなたが意味するのvimではないと思うvi

これは実際にで動作しvimますが、非Linuxオペレーティングシステムに絶対に触れないことを100%確信していない限り、使用しません。その理由は、他のOSにはの独自の実装がありvi、これを実装していないため、viこれらのプラットフォームで実行している場合、Ctrl-Cには独自の従来の動作があります:プロセスを中断し、端末を奇妙な状態のままにする。


3
vi現在まだ存在していて、処理できない実装を指摘できますCtrl-Cか?本当の違いについては私の答えをご覧ください。
jw013

2

を参照している場合vim、わずかな違いがあります。CTRL-C略語をチェックせず、InsertLeaveイベントをトリガーしません。そのため、あなたまたはプラグインはにautocmd依存するステートメントを定義しているInsertLeaveため、トリガーされません。

公式ドキュメントhttp://vimhelp.appspot.com/insert.txt.htmlから

<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode.  Finish
                abbreviation.

CTRL-C          Quit insert mode, go back to Normal mode.  Do not check for
                abbreviations.  Does not trigger the InsertLeave autocommand
                event.

あなたはのためのマッピング定義することができるCTRL-Cのを<esc>、それが引き金となり、InsertLeave

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.