Linux와 Windows CTRL + 에는 C 사용하는 프로그램에 따라 두 가지 뚜렷한 의미가 있습니다. 일부 프로그램(주로 GUI 프로그램)에서는 "복사"를 의미하고 다른 프로그램(거의 모든 명령줄 도구)에서는 "중단" 또는 "종료"를 의미합니다.
이는 GUI 사용에서 명령줄 사용으로 전환하는 사람들에게 특히 골치 아픈 일입니다. "복사"는 완벽하게 안전한 작업이지만, 중단하면 현재 사용 중인 프로그램이 종료되어 잠재적으로 작업이 망가질 수 있기 때문입니다.
이러한 불일치의 이유는 무엇이며 그 뿌리는 어디에 있습니까?
답변1
Ctrl+의 "kill" 의미는 C매우 오래되었습니다. 제 생각에는 Unix보다 더 오래된 것 같습니다.위키피디아TOPS-10으로 돌아가면 1960년대 후반으로 거슬러 올라갑니다. 이 기사에서는 Ctrl+가 C합리적인 선택인 이유를 설명합니다.ASCII 코드, 1963년 출판, 해당 문자는 ETX이며,텍스트 끝. "중지"를 의미하는 문자가 누락되었으며, "이 세그먼트의 입력 끝"을 의미하는 문자는 "현재 처리를 중지합니다"를 의미하는 합리적인 선택입니다.
Ctrl+의 "복사" 의미는 CXerox PARC에서 유래되었습니다.현대적인 형태의 복사-붙여넣기 발명가(그리고 GUI의 대부분의 다른 기본 사항). 정확히 언제였는지는 모르지만 1970년대 후반이었을 것이다.UX Stack Exchange의 이 스레드복사를 위한 C 키 바인딩 선택에 대해 논의하는 것이 좋습니다.
PARC는 TOPS-10 및 Unix 터미널의 기존 의미에 따라 copy Ctrl+를 거부할 이유가 없습니다. C그 당시에는 운영 체제와 애플리케이션이 더 다양했고, 컴퓨터를 사용하는 사람도 훨씬 적었습니다. 모든 애플리케이션의 키 바인딩에 대한 단일 표준에 대한 기회나 요구 사항은 없습니다. Ctrl+ 널리 사용되는 응용 프로그램의 다른 용도는 C다음과 같습니다.단어 별² 및 Emacs의 모드별 명령. 모두 서로 다른 요구 사항이 있고 서로 다른 환경에서 실행되는 애플리케이션을 위해 독립적으로 설계되었습니다.
다음 명령을 사용하여 터미널 키 바인딩을 구성할 수 있습니다.stty
주문하다. 터미널 바인딩은 터미널이 "요리" 모드에 있을 때 활성화됩니다. 예를 들어, 이 명령은 stty intr ^G
SIGINT 신호를 보내는 문자를 Ctrl+ G대신 Ctrl+ 로 설정합니다 C. 역할 ^G
은벨ASCII로 표현되며, 터미널로 전송되면 "벨을 울려라"를 의미합니다. "현재 작업을 중단"하기 위해 Emacs에서 사용하는 문자입니다(원리: 애플리케이션은 사용자를 중단하기 위해 터미널을 통해 사용자에게 BEL을 보냅니다. 사용자는 애플리케이션을 중단하기 위해 터미널을 통해 애플리케이션에 BEL을 보냅니다). 터미널로 전송될 때 표준 의미가 없습니다.
대부분의 쉘은 라인 편집 기능을 제공하므로 터미널을 원시 모드로 설정합니다. 전체 화면 텍스트 모드 앱에서도 마찬가지입니다. Ctrl+ G대신 Ctrl+ 를 인식하도록 이러한 애플리케이션을 구성해야 할 수 C있으며 일부 애플리케이션에는 구성할 수 없는 키 바인딩이 있을 수 있습니다. 따라서 사용 중인 응용 프로그램에 따라 구분 문자 변경이 가능하거나 불가능할 수도 있습니다.
Ctrl또 다른 접근 방식은 + 키 그룹 에 대해 보내는 바이트 순서를 변경하거나 C아무 것도 보내지 않고 대신 복사 작업을 수행하도록 터미널을 구성하는 것입니다. Ctrl+를 보낼 다른 키 세트를 선택할 수도 있습니다 C(노트북이 아닌 키보드가 있는 경우 리모컨 Pause/ Break키를 사용할 수 있습니다). 모든 터미널을 이 방식으로 구성할 수 있는 것은 아닙니다.
1 Ctrl-S(XOFF)는 중지를 의미하지만 애플리케이션이 아닌 터미널로 전송됩니다.
² 다음 줄 옆의 +는 다음 줄을 나타내고 + 및 +는 이전 줄과 페이지 위로 이동을 나타냅니다. 이 키는 QWERTY 키보드에 있기 때문에 선택되었습니다.CtrlXCtrlECtrlR
³ Nitpick:cooked 모드는 인터럽트 신호를 보내는 문자를 포함하여 여러 문자의 해석을 포함하는 일련의 터미널 설정입니다.