![CTRL + C가 vim을 종료하지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/155482/CTRL%20%2B%20C%EA%B0%80%20vim%EC%9D%84%20%EC%A2%85%EB%A3%8C%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
escEnter를 누른 다음 편집기를 :q!
종료할 수 있다는 것을 알고 있습니다.vim
이 문제.
그러나 표준 관례는 ctrl+를 누르면 프로그램이 종료되어 현재 실행 중인 프로세스에 a가 전송된다는 것입니다.cSIGINT
예를 들어, top
및 tail -f
모두 ping
이 규칙을 따릅니다.
내 질문은 이것입니다:왜이 확립된 규칙을 따르지 않습니까 vim
? 역사적인 이유가 있나요, 아니면 다른 이유가 있나요?
제 생각에는 다른 모든 것과 마찬가지로 이 표준 규칙을 따른다면 새로운 사용자에게 많은 혼란을 피할 수 있을 것입니다.
(우리가 이렇게 할 때 왜 처음에는 발생하지 SIGINT
않고 이런 식으로 발생합니까 SIGTERM
?)
답변1
내 질문은: 왜 vim은 이 확립된 규칙을 따르지 않습니까? 역사적인 이유가 있나요, 아니면 다른 이유가 있나요?
vim
이는 대화형 프로그램에서 Control-C가 전체 프로그램이 아닌 현재 명령을 중단하는 또 다른 오래되고 잘 확립된 규칙을 따르기 때문입니다 . 대화형 쉘도 이 규칙을 따릅니다. Control-C는 쉘을 종료하지 않지만 실행 중이거나 실행하려는 명령을 종료합니다.
이 규칙을 따르지 않는 프로그램은 SIGINT
사용자에게 "정말로 종료하시겠습니까?" 또는 "종료하려면 종료를 사용하세요" 등을 물어봄으로써 두려움을 완화하려고 시도하는 경우가 많습니다.
Control-C에 대해 매우 잘 확립된 다른 규칙은 이를 다른 명령의 접두사로 사용하거나(Control-G가 Control-C 역할을 하는 emacs에서 영감을 받은 프로그램에서와 같이) 선택 항목을 클립보드에 복사하는 것입니다.