Ctrl-v를 사용하여 터미널 문자 시퀀스를 덤프하면 어떤 일이 발생하는지 이해하고 계십니까?

Ctrl-v를 사용하여 터미널 문자 시퀀스를 덤프하면 어떤 일이 발생하는지 이해하고 계십니까?

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. 이로 인해 일부 키 조합에서는 이스케이프가 필요합니다(사용하지 않더라도). 아마도 전체 screenbindkey매뉴얼을 읽어야 할 것입니다.

관련 정보