^X^I와 같은 시퀀스에서 ^ 문자는 무엇을 의미합니까?

^X^I와 같은 시퀀스에서 ^ 문자는 무엇을 의미합니까?

내가 읽고있다이 메시지는 zsh 메일링 리스트에서 온 것입니다.키 바인딩과 관련하여 어떤 키를 눌러야 하는지 알고 싶습니다.

  1. ^X^I(내 생각에는 Ctrl-X Ctrl-I자본 XI)
  2. ^[^@(제 생각에는 Ctrl-Esc-@??)
  3. ^X^[q(제 생각에는 Ctrl-X Esc-q??)
  4. ^XQ (Q라고 생각해요 Ctrl-X?)

~에서zsh의 Archlinux 위키 페이지

  1. ^[[1;3A
  2. ^[[1;3D

~에서bindkey

  1. ^[[1;5C
  2. ^[[A

Esc를 의미하는 것은 알지만 ^[다른 것을 찾는 방법을 모르겠습니다. 이를 나열하는 공식 참고 자료나 웹사이트가 있나요?

답변1

^cCtrl는 +에 대한 일반적인 기호입니다. c여기서(대문자) 문자 또는 중 하나입니다 @[\]^_. 해당하는 것을 지정합니다제어 문자. 해당 관계는 제어 문자의 숫자 코드가 인쇄 가능한 문자(문자 또는 구두점)의 숫자 코드에서 64를 뺀 값이라는 것입니다. 이는 기본 2에서 비트를 0으로 설정하는 것과 같습니다. 또한, ^?일반적으로 127이라는 문자가 표현된다.

일부 키는 제어 문자를 보냅니다.

  • Escape= Ctrl+[
  • Tab= Ctrl+I
  • Return(또는 Enter또는 ) = Ctrl+M
  • Backspace= Ctrl+ ?또는 Ctrl+ H(단말기 구성에 따라 다름)

AltMeta( 과거 Unix 시스템에서 해당 위치의 키 이름이었기 때문에 일반적으로 이렇게 불림 )는 인쇄 가능한 문자와 함께 전송(이스케이프) ^[되고 그 문자가 이어집니다.

^[대부분의 기능 키와 커서 키는 문자 뒤에 인쇄 가능한 문자가 오는 이스케이프 시퀀스를 보냅니다 . 자세한 내용은 터미널과 해당 구성에 따라 다릅니다. xterm의 경우 기본값은 다음 문서에 설명되어 있습니다.수동. 본 매뉴얼은 초보자를 위한 매뉴얼이 아닙니다. 다음은 몇 가지 유용한 팁입니다.

  • CSI는 ^[[, 이스케이프 다음에 여는 괄호가 오는 것을 의미합니다.
  • SS3은 ^[O이스케이프 문자 뒤에 대문자 -O가 오는 것을 의미합니다.
  • "응용 프로그램 모드"는 일반적으로 전체 화면 프로그램이 열리는 모드입니다. 역사적인 이유로 일부 키는 이 모드에서 다른 이스케이프 시퀀스를 보냅니다. (실제로 여러 모드가 있지만 실제로는 충돌이 없기 때문에 중요한 경우 두 모드의 이스케이프 시퀀스를 바인딩할 수 있기 때문에 자세히 설명하지 않겠습니다.)
  • 수정자( Shift, Ctrl, Alt/ Meta)는 숫자 코드로 표시됩니다. 이스케이프 시퀀스의 마지막 문자 앞에 세미콜론과 숫자를 삽입합니다. 문서에서 F5send ^[[15~Shift+ F5send 의 예를 들어보세요 ^[[15;2~. 보내기 ^[[및 한 글자에 대한 커서 키엑스, 수정자를 나타냅니다.중간 사이즈, 이스케이프 시퀀스는 다음과 같습니다.^[[1;MX

Xterm은 다음과 같습니다ANSI 표준이는 물리적 엔드포인트까지 거슬러 올라가는 과거 사용량을 기반으로 합니다. 대부분의 최신 터미널 에뮬레이터는 ANSI 표준을 따르고 전부는 아니지만 일부 xterm 확장을 구현합니다. 그러나 터미널마다 약간의 차이가 있습니다.

그러므로:

  • ^X^I= Ctrl+ X Ctrl+ I= Ctrl+X Tab
  • ^[^@= Ctrl+ Alt+ @= Escape Ctrl+ @. 대부분의 터미널에서 Ctrl+ 는 = + + = + Space^@보냅니다 .^[^@CtrlAltSpaceEscape CtrlSpace
  • ^X^[q= Ctrl+ X Alt+ q= Ctrl+X Escape q
  • ^XQ= Ctrl+ X Shift+q
  • ^[[A=Up
  • ^[[1;3A= Alt+ Up( Up, 수정자를 의미함1;M중간 사이즈). 많은 터미널은 실제로 Alt+에 대해 이러한 이스케이프 시퀀스를 보내지 않습니다 cursor key.
  • ^[[1;3D= Alt+Left
  • ^[[1;5C= Ctrl+Right

이스케이프 시퀀스에 해당하는 키를 찾는 일반적이고 편리한 방법은 없습니다. 반대로, 쉘 프롬프트(또는 많은 터미널 기반 편집기에서)에서 코드 다음에 Ctrl+를 누르면 V문자 그대로 이스케이프 시퀀스가 ​​삽입됩니다.

당신은 또한 볼 수 있습니다키보드 입력과 텍스트 출력은 어떻게 작동합니까?그리고키 바인딩 테이블?

답변2

Giles는 다음과 같은 편지를 계속해서 언급했습니다.

해당 관계는 제어 문자의 숫자 코드가 인쇄 가능한 문자(문자 또는 문장 부호)의 숫자 코드에서 64를 뺀 값이라는 것입니다. 이는 기본 2의 비트를 0으로 설정하는 것과 같습니다.

당신은 할 수ascii(7). 8진수 보기:

Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
────────────────────────────────────────────────────────────────────────
000   0     00    NUL '\0' (null character)   100   64    40    @
001   1     01    SOH (start of heading)      101   65    41    A
002   2     02    STX (start of text)         102   66    42    B
003   3     03    ETX (end of text)           103   67    43    C
004   4     04    EOT (end of transmission)   104   68    44    D
005   5     05    ENQ (enquiry)               105   69    45    E
006   6     06    ACK (acknowledge)           106   70    46    F
007   7     07    BEL '\a' (bell)             107   71    47    G
010   8     08    BS  '\b' (backspace)        110   72    48    H
011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
012   10    0A    LF  '\n' (new line)         112   74    4A    J
013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
014   12    0C    FF  '\f' (form feed)        114   76    4C    L
015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
016   14    0E    SO  (shift out)             116   78    4E    N
017   15    0F    SI  (shift in)              117   79    4F    O
020   16    10    DLE (data link escape)      120   80    50    P
021   17    11    DC1 (device control 1)      121   81    51    Q
022   18    12    DC2 (device control 2)      122   82    52    R
023   19    13    DC3 (device control 3)      123   83    53    S
024   20    14    DC4 (device control 4)      124   84    54    T
025   21    15    NAK (negative ack.)         125   85    55    U
026   22    16    SYN (synchronous idle)      126   86    56    V
027   23    17    ETB (end of trans. blk)     127   87    57    W
030   24    18    CAN (cancel)                130   88    58    X
031   25    19    EM  (end of medium)         131   89    59    Y
032   26    1A    SUB (substitute)            132   90    5A    Z
033   27    1B    ESC (escape)                133   91    5B    [
034   28    1C    FS  (file separator)        134   92    5C    \  '\\'
035   29    1D    GS  (group separator)       135   93    5D    ]
036   30    1E    RS  (record separator)      136   94    5E    ^
037   31    1F    US  (unit separator)        137   95    5F    _
...
077   63    3F    ?                           177   127   7F    DEL

이 테이블은 저작권 및 라이센스가 있습니다.

^H백스페이스 문자, ^M캐리지 리턴 문자, ^J줄 바꿈 문자, ^I탭 문자, ^[이스케이프 문자 등에 해당합니다.

답변3

^ 문자는 컨트롤 키를 나타냅니다. ^[는 ESCAPE 또는 ASCII 27을 생성합니다. 이 맥락에서 일반적으로 대문자 사용은 중요하지 않으며 ^A는 "a" 키와 동시에 누르는 컨트롤 키인 ^a와 동일한 의미입니다.

^[^@은 ESCAPE 다음에 control-@이 오는 것을 의미합니다. 키보드 레이아웃에 따라 "@"을 생성하려면 Shift 또는 Alt-Gr을 동시에 눌러야 할 수도 있습니다.

^X^[q는 control-x 다음에 ESCAPE 다음에 q가 오는 것을 의미합니다.

^[[1;5C는 ESCAPE 뒤에 문자열 "[1;5C"가 오는 것을 의미합니다. 나에게 이것은 색상, 굵게, 기울임꼴 등과 같은 텍스트 속성을 변경하는 터미널 제어 시퀀스처럼 보입니다.

^를 사용하여 제어 키를 나타내는 것이 표준화되어 있는지는 모르겠지만 다음과 같이 수행됩니다.위키피디아 페이지. ^[를 입력하여 ASCII 27을 생성하는 것은 아마도 VT100과 같은 DEC 터미널에서 시작되었으며 현재는 표준일 것입니다.

관련 정보