vi를 사용할 때 전통적인 방식 대신 Ctrl+를 사용하여 삽입 모드를 종료합니다 . 후자 대신 전자를 사용하고 싶지 않은 상황이 있습니까? 모범 사례 이외의 다른 문제가 발생합니까?CEsc
답변1
Ctrl-C삽입 모드를 포함한 대부분의 모드에서 Esc다릅니다 . 차이점은 약어 대신 약어가 트리거된다는 것입니다. 이것이 귀하에게 중요한지 여부는 귀하 또는 귀하가 사용하는 플러그인이 약어를 사용하는지 여부에 따라 다릅니다.vi
vim
EscCtrl-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
이를 구현하지 않는 자체 구현이 있을 수 있으며 vi
Ctrl-C가 해당 플랫폼에서 실행될 때 프로세스를 중단하고 터미널을 이상한 상태로 두는 고유한 레거시 동작을 발견할 수 있기 때문입니다.