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
참조 )CtrlX
- 캐럿( ^) 뒤에 해당 제어 문자를 텍스트로 명시적으로 작성하는 캐럿 표기법( 이 질문에서는 Ctrl- V메소드가 필요하지 않음) 예:
^X
C-
그 뒤에는 제어 문자가 옵니다. 예:C-x
. 이로 인해 일부 키 조합에서는 이스케이프가 필요합니다(사용하지 않더라도). 아마도 전체screen
와bindkey
매뉴얼을 읽어야 할 것입니다.