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

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

CtrlJ다른 게시물에서 키 입력 대신 터미널에 입력할 수 있다는 내용 을 읽었습니다 CtrlM. 정말 좋습니다. Return하지만 내가 원하는 것은 다음과 같은 다른 조합으로 변경하는 것입니다. 키를 Ctrlspacebar다시 매핑하려고 시도했지만 성공하지 못했습니다.F1

가능합니까?

답변1

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

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

  1. 쿠킹/표준 모드. 이 모드에서는 터미널에 ^H(또는 ^?), ^W( ^U또는 @), ^V(또는 \) 문자를 사용하여 라인을 편집할 수 있는 내부 라인 편집기가 제공됩니다. ^J문자가 수신될 때까지 터미널 장치에서 읽는 응용 프로그램에는 아무 것도 전송되지 않습니다 .
  2. 날것의모델. 각 문자는 입력 직후, 지연 후 또는 너무 많은 문자가 입력된 후에 터미널 장치를 읽는 응용 프로그램에서 사용할 수 있습니다.시간그리고매개변수가 있지만 어쨌든 내부 라인 편집기는 사용되지 않습니다.

두 경우 모두 ^M(CR) 문자는 자동으로 ^J(LF)로 변환됩니다(또는 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+SpaceNUL 문자가 전송되며 이를 호출할 수 \0있습니다 ^@.

관련 정보