CTRL + C가 vim을 종료하지 않는 이유는 무엇입니까? [복사]

CTRL + C가 vim을 종료하지 않는 이유는 무엇입니까? [복사]

escEnter를 누른 다음 편집기를 :q!종료할 수 있다는 것을 알고 있습니다.vim이 문제.

그러나 표준 관례는 ctrl+를 누르면 프로그램이 종료되어 현재 실행 중인 프로세스에 a가 전송된다는 것입니다.cSIGINT

예를 들어, toptail -f모두 ping이 규칙을 따릅니다.

내 질문은 이것입니다:이 확립된 규칙을 따르지 않습니까 vim? 역사적인 이유가 있나요, 아니면 다른 이유가 있나요?

제 생각에는 다른 모든 것과 마찬가지로 이 표준 규칙을 따른다면 새로운 사용자에게 많은 혼란을 피할 수 있을 것입니다.

(우리가 이렇게 할 때 왜 처음에는 발생하지 SIGINT않고 이런 식으로 발생합니까 SIGTERM?)

답변1

내 질문은: 왜 vim은 이 확립된 규칙을 따르지 않습니까? 역사적인 이유가 있나요, 아니면 다른 이유가 있나요?

vim이는 대화형 프로그램에서 Control-C가 전체 프로그램이 아닌 현재 명령을 중단하는 또 다른 오래되고 잘 확립된 규칙을 따르기 때문입니다 . 대화형 쉘도 이 규칙을 따릅니다. Control-C는 쉘을 종료하지 않지만 실행 중이거나 실행하려는 명령을 종료합니다.

이 규칙을 따르지 않는 프로그램은 SIGINT사용자에게 "정말로 종료하시겠습니까?" 또는 "종료하려면 종료를 사용하세요" 등을 물어봄으로써 두려움을 완화하려고 시도하는 경우가 많습니다.

Control-C에 대해 매우 잘 확립된 다른 규칙은 이를 다른 명령의 접두사로 사용하거나(Control-G가 Control-C 역할을 하는 emacs에서 영감을 받은 프로그램에서와 같이) 선택 항목을 클립보드에 복사하는 것입니다.

관련 정보