shi*_*hin 23 terminal keyboard escape-characters
我正在从 zsh 邮件列表中阅读有关键绑定的消息,我想知道我需要按哪个键:
^X^I
(我认为Ctrl-X
Ctrl-I
,首都X
和I
)^[^@
(我觉得Ctrl-Esc-@
??)^X^[q
(我觉得Ctrl-X
Esc-q
??)^XQ
(我认为Ctrl-X
和 Q ??)^[[1;3A
^[[1;3D
从 bindkey
^[[1;5C
^[[A
我知道这^[
意味着 Esc,但我不确定如何找到其他人。是否有任何官方参考或网站列出这些?
Gil*_*il' 23
^c
是Ctrl+的常用符号,c其中c是(大写)字母或其中之一@[\]^_
。它指定相应的控制字符。对应关系是控制字符的数字代码是可打印字符(字母或标点符号)的数字代码减去64,对应于基数为0的位设置为0。另外,^?
通常表示字符127。
一些键发送控制字符:
Alt(通常被称为,Meta因为这是历史 Unix 机器上那个位置的键的名称)加上一个可打印的字符发送^[
(转义),然后是该字符。
大多数功能键和光标键发送一个转义序列,即字符^[
后跟一些可打印字符。详细信息取决于终端及其配置。对于 xterm,默认值记录在手册中。该手册不适合初学者。以下是一些有用的提示:
^[[
,即转义后跟开括号。^[O
,即转义后跟大写-O。^[[15~
和Shift+F5发送^[[15;2~
。对于发送^[[
和一个字母X 的光标键,表示修饰符M,转义序列是。^[[1;MX
Xterm 遵循ANSI 标准,该标准本身基于可追溯到物理终端的历史用法。大多数现代终端仿真器都遵循该 ANSI 标准并实现了一些但不是全部的 xterm 扩展。不过,请注意终端之间的细微差异。
因此:
^X^I
= Ctrl+ X Ctrl+ I= Ctrl+X Tab^[^@
= Ctrl+ Alt+ @= Escape Ctrl+ @。在大多数终端上,Ctrl+Space也发送^@
so ^[^@
= Ctrl+ Alt+ Space= Escape Ctrl+ Space。^X^[q
= Ctrl+ X Alt+ q= Ctrl+X Escape q^XQ
= Ctrl+ X Shift+q^[[A
= Up^[[1;3A
= Alt+ Up( Up, with表示修饰符M )。请注意,许多终端实际上并没有为+发送这些转义序列。1;M
Altcursor key^[[1;3D
= Alt+Left^[[1;5C
= Ctrl+Right没有通用、方便的方法来查找与转义序列对应的键。反过来,在 shell 提示下(或在许多基于终端的编辑器中)按Ctrl+V后跟一个键和弦会按字面意思插入转义序列。
另请参阅键盘输入和文本输出如何工作?和键绑定表?
扩展吉尔斯提到的信件:
对应关系是控制字符的数字代码是可打印字符(字母或标点符号)的数字代码减去64,对应于在base 2中设置一个位为0。
你可以在ascii(7)
. 查看八进制数:
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
Run Code Online (Sandbox Code Playgroud)
^H
对应退格符、^M
回车符、^J
换行符、^I
制表符、^[
转义符等。