CTRL-M에서 터미널 단축키를 다른 조합으로 매핑하는 방법

CTRL-M에서 터미널 단축키를 다른 조합으로 매핑하는 방법

다른 게시물에서 터미널에 키 대신 CtrlJ또는 키를 입력할 수 있다는 내용을 읽었습니다 . 정말 훌륭합니다. 하지만 제가 할 수 있기를 원하는 것은 이를 다른 조합으로 변경하는 것입니다. 예를 들면 다음과 같습니다 . 키를 다시 매핑해 보았지만 소용이 없었습니다.CtrlMReturnCtrlspacebarF1

이것이 가능한가?

답변1

정확히 무엇을 하고 싶은지에 따라 다릅니다.

터미널에는 두 가지 주요 모드가 있으며 둘 다 추가 설정으로 미세 조정할 수 있습니다.

  1. 요리/표준 모드. 해당 모드에서 터미널에는 ^H(또는 ^?), ^W( ^U또는 @), ^V(또는 \) 문자를 사용하여 라인을 편집할 수 있는 내부 라인 편집기가 함께 제공됩니다. 문자가 수신될 때까지 터미널 장치에서 읽는 애플리케이션에 아무 것도 전송되지 않습니다 ^J.
  2. 날것의방법. 모든 문자를 입력하자마자, 또는 지연 후 또는 너무 많은 문자를 입력한 후에 애플리케이션이 터미널 장치를 읽는 데 사용할 수 있는 경우시간그리고매개변수가 있지만 어쨌든 내부 라인 편집기에서는 사용할 수 없습니다.

두 경우 모두 ^M(CR) 문자는 자동으로 (LF)로 변환될 수 있습니다 ^J(또는 Enter 키를 누를 때 CR과 LF를 모두 보내는 터미널의 경우 무시됩니다).

첫 번째 모드는 터미널의 기본 모드입니다. 두 번째 모드는 라인 편집을 제어하려는 이나 같은 애플리케이션에서 zsh사용 됩니다 bash.vi

첫 번째 모드에서는 라인을 승인하는 데 사용되는 문자를 변경할 수 없습니다.

^J그러나 이 키나 저 키를 누르면 터미널에 문자를 보내도록 지시할 수 있습니다 . 예를 들어 를 사용하면 X11 리소스를 xterm사용하여 translations키 매핑을 변경하고 특정 키를 누를 때 원하는 것을 보내도록 지시할 수 있습니다. 터미널이 키보드 재매핑을 지원하지 않는 경우에도 GNU를 사용하여 screen번역을 수행할 수 있습니다. 예를 들어, 터미널이 를 ^[OP누를 때 문자 시퀀스를 보내는 경우 F1다음을 추가할 수 있습니다.

bindkey \033OP "\012"

~/screenrc당신이 누를 때 LF를 보내도록 지시 하십시오F1

응용 프로그램이 입력을 제어하는 ​​두 번째 경우에는 위와 동일한 접근 방식을 계속 사용할 수 있지만 키를 누를 때마다 개별 응용 프로그램이 이 작업을 수행하도록 구성할 수도 있습니다.F1

예를 들어 를 사용하면 zshLF 문자가 accept-line zsh위젯에 바인딩됩니다. 당신은 할 수 있습니다 :

bindkey "^[OA" accept-line

F1동일한 위젯에 바인딩 합니다 .

일반적으로 또는 Ctrl+Space으로 참조할 수 있는 NUL 문자를 보냅니다 .\0^@

관련 정보