readline 키바인딩을 읽는 방법

readline 키바인딩을 읽는 방법

bind -P나에게 다음과 같은 내용을 답장으로 보내주세요.

bracketed-paste-begin can be found on "\e[200~".
revert-line can be found on "\e\C-r", "\er".
previous-history can be found on "\C-p", "\eOA", "\e[A".

어떻게 읽나요? 완전한 설명이 있습니까?

답변1

readline은 readline(3)과 bash(1)에 기록된 키 입력 순서를 지정하기 위해 여러 입력 형식을 허용하지만 출력 형식은 더 간단합니다(제가 관찰한 바에 따르면):

  • \eis Escape(다음 문자 앞에 순차적으로 누름)
  • \C-is Control (다음 문자와 동시에 누름)
  • \\백슬래시입니다
  • \"큰따옴표입니다
  • \nnn(nnn은 3자리 숫자)은 8진수로 된 바이트입니다.
  • 나머지는 다 캐릭터 그 자체인데

순차적으로 누르는 것 외에도 \eareadline(3)의 소위 Meta 키를 누르고 를 입력할 수도 있습니다 a. 다른 글자도 비슷하다. 대부분의 최신 키보드에는 메타 키가 없으므로 이는 주로 역사적인 명명법으로 간주될 수 있습니다. PC 키보드에서는 Alt 키를 사용합니다.

긴 이스케이프 시퀀스(예: \eOQ또는 )는 \e[15~수동 입력에 적합하지 않지만 키보드의 특수 키에 의해 생성됩니다. 언급된 예는 현재 내 컴퓨터에 있는 F2 및 F5입니다.

질문에 표시된 시퀀스는 \e[200~기능 키에 의해 직접 생성되지 않습니다. 터미널 에뮬레이터는 사용자가 텍스트를 입력하는 대신 붙여넣을 때 텍스트를 삽입할 수 있습니다. (이 기능은 readline 변수에 의해 제어됩니다 enable-bracketed-paste)

(특히 1970년대와 1980년대) 서로 다른 키보드 유형이 서로 다른 이스케이프 시퀀스를 생성했기 때문에 readline은 많은 명령을 여러 시퀀스에 바인딩했습니다. 키보드에서 이러한 시퀀스가 ​​모두 생성될 것이라고 기대하지 마십시오.

키보드 및 터미널 에뮬레이터에서 생성된 결과를 보려면 를 사용할 수 있습니다 showkey -a. 일부 키는 창 관리자 또는 터미널 에뮬레이터에서 캡처됩니다. 그래서 그들은 결코 들어가지 showkey않습니다 readline.

관련 정보