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)에 기록된 키 입력 순서를 지정하기 위해 여러 입력 형식을 허용하지만 출력 형식은 더 간단합니다(제가 관찰한 바에 따르면):
\e
is Escape(다음 문자 앞에 순차적으로 누름)\C-
is Control (다음 문자와 동시에 누름)\\
백슬래시입니다\"
큰따옴표입니다\nnn
(nnn은 3자리 숫자)은 8진수로 된 바이트입니다.- 나머지는 다 캐릭터 그 자체인데
순차적으로 누르는 것 외에도 \ea
readline(3)의 소위 Meta 키를 누르고 를 입력할 수도 있습니다 a
. 다른 글자도 비슷하다. 대부분의 최신 키보드에는 메타 키가 없으므로 이는 주로 역사적인 명명법으로 간주될 수 있습니다. PC 키보드에서는 Alt 키를 사용합니다.
긴 이스케이프 시퀀스(예: \eOQ
또는 )는 \e[15~
수동 입력에 적합하지 않지만 키보드의 특수 키에 의해 생성됩니다. 언급된 예는 현재 내 컴퓨터에 있는 F2 및 F5입니다.
질문에 표시된 시퀀스는 \e[200~
기능 키에 의해 직접 생성되지 않습니다. 터미널 에뮬레이터는 사용자가 텍스트를 입력하는 대신 붙여넣을 때 텍스트를 삽입할 수 있습니다. (이 기능은 readline 변수에 의해 제어됩니다 enable-bracketed-paste
)
(특히 1970년대와 1980년대) 서로 다른 키보드 유형이 서로 다른 이스케이프 시퀀스를 생성했기 때문에 readline은 많은 명령을 여러 시퀀스에 바인딩했습니다. 키보드에서 이러한 시퀀스가 모두 생성될 것이라고 기대하지 마십시오.
키보드 및 터미널 에뮬레이터에서 생성된 결과를 보려면 를 사용할 수 있습니다 showkey -a
. 일부 키는 창 관리자 또는 터미널 에뮬레이터에서 캡처됩니다. 그래서 그들은 결코 들어가지 showkey
않습니다 readline
.