터미널에 C-/ (제어 슬래시)를 보내려면 어떻게해야합니까?


13

터미널에서 Emacs를 실행하려고합니다. 터미널 환경 설정에서 "메타로 사용 옵션"을 설정했으며 약 95 %가 올바르게 작동합니다.

키 시퀀스 ctrl-/ (또는 Emacs 표기법 C- /)는 "실행 취소"입니다. 이 키 시퀀스는 터미널이 벨을 울리게합니다. 이 문제를 어떻게 해결합니까?


FWIW, 이것은 iTerm2-iterm2.com에서 작동합니다.하지만 ^ _를 사용하여 좀 더 휴대하기 편리하도록 다시 훈련시킬 것입니다.
Steven R. Loomis

@ StevenR.Loomis 휴대용? 안드로이드에서 control-// control-_ 작동하지 않습니다 ...
Michael

@Michael 나는 ASCII로 표현할 수 있기 때문에 이식성이 뛰어나고 (허용 된 답변 참조) 문제없이 네트워크 연결을 전송할 수 있습니다. 또한 내가 본 대부분의 실제 키보드에서 사용할 수있는 것 같습니다. 키보드를 안드로이드 장치와 페어링하려고 시도하지 않았습니다. 부드럽거나 하드 키보드를 말하는 것입니까?
Steven R. Loomis

@ StevenR.Loomis 소프트웨어 ... 컨트롤 부분이 무시되어 슬래시 또는 밑줄 삽입을 취소하려고합니다.
Michael

답변:


19

Control- /표준 제어 코드 세트의 일부가 아닙니다 . 많은 터미널 에뮬레이션에서 키 입력으로 직접 표현할 수는 없습니다. 이러한 키 스트로크는 특정 플랫폼 별 "스캔 코드 모드"또는 "GUI 모드"(API가 사용중인 키와 수정자가 정확히 무엇인지 알려줍니다)에서만 올바르게 감지 할 수 있습니다. 터미널 에뮬레이터가 유효하지 않은 키 입력이기 때문에 신호음이 울립니다.

표준 제어 코드는 "제어"버전에만 적용됩니다.

  • @ AZ [\]^_(ASCII 0-31) 및
  • ? (ASCII 127)

대부분의 미국 키 레이아웃으로 실행되는 대부분의 터미널 에뮬레이터 프로그램에서 Shift일부 "제어 코드"를 생성 하려면을 눌러야 합니다.

  • C-은 @이다 ControlShift2(이후 @이다 Shift2)
  • ^ 인 C- ControlShift6(이후 ^이다 Shift6)
  • C-_이다 ControlShift-(이후 _이다 Shift-)
  • 그러나 C-? 항상하지 않을 수 있습니다 ControlShift/(이후 ?입니다 Shift/); 씨-? 일반적으로 Backspace(Apple 키보드에서는 추가 기호 ⌦없이“삭제”라고 표시된 키) 또는 Delete(Apple 키보드에서 ⌦가 있는 키)에 의해 생성됩니다 .

tty 기반 Emacs에서는 일반적 undo으로 C- / 대신 C-_를 사용할 수 있습니다 .


1
철저한 답변에 감사드립니다. 다른 터미널 유형으로 재생하여 작동하는지 확인할 수 있습니다.
케빈 피터슨

1
"다른 터미널 유형"? 다른 터미널 에뮬레이터 프로그램을 의미합니까, 또는 터미널> 환경 설정> 설정> [프로필]> 고급> 터미널 선언을 통해 터미널 에서 $ TERM 값을 참조 하고 있습니까? (기본 설정은 $ TERM의 값을 설정하는 것입니다. 터미널 에뮬레이션의 작동을 변경하지 않습니다.) Control- /는 X11의 기능이며 Cocoa 또는 Terminal에서 지원되지 않습니다.
Chris 페이지

5

Ctrl- /는 VT102부터 Ctrl-_에 해당하는 0x1f를 보냅니다. VT100 에뮬레이터는 많지만 실제로는 VT102 에뮬레이터입니다. iTerm2는이 동작을 따르기 때문에 작동합니다.

VT100 사양을 엄격하게 준수하는 에뮬레이터 만 Ctrl- /를 보낼 수 없습니다. 터미널 응용 프로그램 중 하나라고 생각합니다.

VT100은 제어 키를 누를 때 7 비트 ASCII의 최상위 2 비트를 마스킹합니다. /는 0x2f이고 o는 0x6f입니다. 2 비트가 마스킹되면 둘 다 0x0f입니다. VT100은 Ctrl-o를 보낼 수 있지만 Ctrl- /는 보낼 수 없습니다.


이것이 정답입니다.
ocodo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.