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문서에는 두 가지 제어 문자 표현을 지원하는 것으로 나와 있습니다. (예 참조 Ctrl- X)

  • 캐럿 표기법, 즉 명시적으로 캐럿( ^)을 쓰고 그 뒤에 해당 텍스트 제어 문자가 옵니다( 이 질문에서는 Ctrl- V메소드가 필요하지 않습니다).^X
  • C-제어 문자가 뒤에 옵니다. 예: C-x. 이로 인해 일부 키 조합을 이스케이프해야 합니다(사용하지 않더라도). 아마도 전체 텍스트 screenbindkey설명서를 읽어야 할 것입니다.

관련 정보