zsh의 함수나 위젯에 키맵을 바인딩하려면 먼저 Ctrl프롬프트에서 + -를 누른 다음 사용하려는 키 시퀀스를 입력하고 키 바인딩 출력 v명령에서 이를 사용해야 한다는 것을 배웠습니다.
예를 들어 편집기에서 현재 명령줄 내용을 여는 작업에 매핑하려면 다음이 필요합니다.Ctrl+xCtrl+v
- Ctrl+ -를 눌러 v"덤프 키 모드"로 들어갑니다.
- 이기다Ctrl+xCtrl+v
- 내 경우에는 이것이 생성됩니다
^X^E
- 내 경우에는 이것이 생성됩니다
- 그것을 가져와
^X^E
다음과 같은 키 바인딩 명령에 사용하십시오.
bindkey "^X^E" edit-command-line
이것이 왜 필요하며, 이 작업을 수행할 때 "무대 뒤에서" 실제로 무슨 일이 일어나고 있습니까?
답변1
Ctrl- 를 누르면 V쉘은 키보드 인터럽트를 무시하고 누른 키 조합을 입력 문자로 시작합니다. ASCII는 모든 제어 문자를 보존하도록 설계되었기 때문에 이는 쉽게 달성할 수 있습니다.
물론 ^
해당 키를 표시하고 표시할 때 약간의 속임수를 써야 합니다. 그렇지 않으면 사용자가 봐야 하는 것 대신 제어 문자가 출력됩니다.
bindkey
문서에는 두 가지 제어 문자 표현을 지원하는 것으로 나와 있습니다. (예 참조 Ctrl- X)
- 캐럿 표기법, 즉 명시적으로 캐럿( ^)을 쓰고 그 뒤에 해당 텍스트 제어 문자가 옵니다( 이 질문에서는 Ctrl- V메소드가 필요하지 않습니다).
^X
C-
제어 문자가 뒤에 옵니다. 예:C-x
. 이로 인해 일부 키 조합을 이스케이프해야 합니다(사용하지 않더라도). 아마도 전체 텍스트screen
와bindkey
설명서를 읽어야 할 것입니다.