.inputrc의 제어 문자 이해


21

원격 컴퓨터의 내 Linux 계정에는 다음과 같은 사전 정의가 제공됩니다. .inputrc

"\e[1~": beginning-of-line
"\e[4~": end-of-line
\e[5~”: history-search-backward
\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on

나는 GNU bash는 설명서를 읽고 있습니다 주제에를 ,하지만 난 문자 시퀀스가 무엇인지 설명하는 섹션을 찾을 수 없어 \e[1~, \e[5C, \e\e[D, 등을 의미합니다.

내가 어딘가에 읽을 생각 \e수단 meta character(내가 생각하는 Alt내 키보드),하지만 무슨 일이 다른 제어 문자를 이해하지 못하고 [, ~, 5D등을 의미한다.

누구든지 주제에 대한 좋은 참조를 알고 있습니까?

답변:


21

이들은 영숫자가 아닌 다양한 키를 "터미널"키보드에서 누를 때 전송 되는 ANSI 제어 코드 이스케이프 시퀀스 입니다.

\ e는 ASCII "ESCAPE"문자를 의미합니다 (8 진수 033 16 진수 1B 10 진수 27). CSI (명령 시퀀스 소개)의 일부입니다.

Escape [ 2 ~VT220 (또는 이후) 터미널 에서 "삽입"이라고 표시된 키를 누를 때 전송되는 문자 시퀀스 입니다.

이러한 많은 규약은 xterm 및 Linux 콘솔 / 쉘과 같은 소프트웨어에 채택되었으며 종종 호환되지 않는 다양한 방법으로 확장되었습니다.

bash의 READLINE 함수에서이 시퀀스를 사용하는 방법은 readline 설명서 페이지 에 설명되어 있습니다.

       두 번째 형식 인 "keyseq": function-name 또는 macro에서 keyseq는 다릅니다
       전체 키 시퀀스를 나타내는 문자열에서 위의 키 이름에서
       큰 따옴표 안에 순서를 배치하여 지정하십시오. 일부 GNU
       다음 예제와 같이 Emacs 스타일 키 이스케이프를 사용할 수 있지만
       기호 문자 이름이 인식되지 않습니다.

          "\ Cu": 범용 인수
          "\ Cx \ Cr": 다시 읽기 초기화 파일
          "\ e [11 ~": "기능 키 1"

어떤 키보드 키에 해당하는 이스케이프 시퀀스 목록을 얻으려면 infocmp -L -1또는infocmp -L -1 xterm


우수한!! 그건 정확히 내가 무엇을 찾고 있었다. @RedGrittyBrick 감사합니다!
Amelio Vazquez-Reina

+1. -> = + Ctrl에서 코드를 찾고있었습니다 . inputrcENTERCtrln
rendon

@ user1133275 : 링크가 업데이트되었지만 man 3 readline 사용자 시스템 의 명령 이 동일한 정보를 제공해야합니다. 이 명령 man 3 readlineWIndows 10의 WSL 에서도 작동합니다 . 필요한 경우 bind -P어려움을 일으키는 출력 의 특정 부분에 대해 새로운 질문을 할 수 있습니다 .
RedGrittyBrick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.