삽입 모드를 종료하기 위해 esc 대신 ctrl + c를 사용하면 vi에서 아무것도 끊어 집니까?


15

vi를 사용하는 경우보다 전통적인 대신 Ctrl+를 C사용 하여 삽입 모드를 종료 할 수 있습니다 Esc. 후자 대신 전자를 사용하는 것이 바람직하지 않은 상황이 있습니까? 모범 사례 이외의 다른 것이 있습니까?


실수로 전자를 치는 것은 바람직하지 않으므로 오류가 발생 Type :quit<Enter> to exit Vim하여 Google로 돌아가는 방법을 알려줍니다. 타격 i하면 바로 삽입 모드로 돌아갑니다.
물 자체

답변:


9

Ctrl-CEsc에서 동일하지 않습니다 vi/ vim모드 삽입을 포함, 대부분의 모드에서. 차이점은 Esc약어를 트리거하지만 Ctrl-c그렇지는 않습니다. 이것이 당신에게 중요한지는 당신이나 당신이 사용하는 플러그인이 약어를 사용하는지에 달려 있습니다.


참고이 가정하는 것이보다 안전 Esc하고 Ctrl-C수 없습니다 에 같은 일을 의미한다 vim. 이 동일한 사이트의 다른 는 블록 삽입 모드를 종료 할 때입니다 (아닌 vi).


알아두면 좋지만 제 질문은 삽입 모드를 종료하는 것에 관한 것이 었습니다.
MDMarra

@MDMarra Doh, 질문을 잘못 읽었습니다. 삽입 모드는 여전히 다릅니다. 업데이트 된 답변을 참조하십시오.
jw013

1
내가 다루어야 할 가장 중요한 차이점은 다음과 같습니다. 시각적 블록 모드를 사용하는 여러 줄 삽입은 Cc가 아닌 Esc와 함께 작동합니다.
enfascination

4

당신이 vim아니라고 생각합니다 vi.

이것은 실제로 vimLinux에서 작동하지 않지만 100 % 확신하지 않는 한 Linux를 사용하지 않을 것입니다. 그 이유는 다른 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.