esc 대신 ctrl+c를 사용하여 삽입 모드를 종료하면 vi에서 문제가 발생합니까?

esc 대신 ctrl+c를 사용하여 삽입 모드를 종료하면 vi에서 문제가 발생합니까?

vi를 사용할 때 전통적인 방식 대신 Ctrl+를 사용하여 삽입 모드를 종료합니다 . 후자 대신 전자를 사용하고 싶지 않은 상황이 있습니까? 모범 사례 이외의 다른 문제가 발생합니까?CEsc

답변1

Ctrl-C삽입 모드를 포함한 대부분의 모드에서 Esc다릅니다 . 차이점은 약어 대신 약어가 트리거된다는 것입니다. 이것이 귀하에게 중요한지 여부는 귀하 또는 귀하가 사용하는 플러그인이 약어를 사용하는지 여부에 따라 다릅니다.vivimEscCtrl-c


Esc가정하고 실행하는 것이 Ctrl-C더 안전합니다.아니요의미는 동일합니다 vim. 다른동일한 사이트에서 블록 삽입 모드를 종료할 때입니다( 에서는 아님 vi).

답변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.

답변3

내 생각엔 당신이 말하는 바는 vim'아니다' 인 것 같아요 vi.

이것은 Linux에서 작동 vim하지만 Linux가 아닌 운영 체제를 절대 건드리지 않을 것이라고 100% 확신하지 않는 한 사용하지 않을 것입니다. 그 이유는 다른 운영 체제에는 vi이를 구현하지 않는 자체 구현이 있을 수 있으며 viCtrl-C가 해당 플랫폼에서 실행될 때 프로세스를 중단하고 터미널을 이상한 상태로 두는 고유한 레거시 동작을 발견할 수 있기 때문입니다.

관련 정보