たとえば、
"\e[1;5C"
"\e[Z"
"\e-1\C-i"
\e
私はescapeを表すものとC-
forなどいくつかの部分だけ知っていますが、Ctrlこの数字(1
)と文字()Z
は何ですか?;
、[
および記号は何を表しますか-
?
試行錯誤に過ぎませんか、それともbashキーコードの完全なリストとその構文が説明されていますか?
答え1
これは、特定のキーを押すと端末から送信される一連の文字です。 bashやreadline自体とは何の関係もありませんが、特定のキーが押されたときに実行されるアクションを設定するには、特定のreadline
キーまたはキーの組み合わせで送信される文字の順序を知る必要があります。
このキーを押すと、A通常、端末はa
(0x61)文字を送信します。<Ctrl-I>
またはを<Tab>
押すと、通常^I
送信される文字もTAB
または\t
(0x9)として呼び出されます。ほとんどのファンクションキーとナビゲーションキーは、通常(または0x1b、8進数033)^[
とも呼ばれる(control-[)で始まる一連の文字を送信しますが、正確な順序は端末によって異なります。ESC
\e
キーまたはキーの組み合わせが端末に送信する内容を見つけるための最良の方法は、そのキーを実行してキーボードから入力することですsed -n l
。Enterこれにより、次の内容が表示されます。
$ sed -n l
^[[1;5A
\033[1;5A$
最初の行は、echo
端末装置によって実行されるローカル端末によって引き起こされます(端末装置の設定が影響を与える可能性があるため、信頼できません)。
2行目はで出力されますsed
。含まれていない$
、単に行の終わりがどこにあるかを示します。
上記は、Ctrl-Up(私が押したもの)6文字、、、、およびESC
(0x1b 0x5b 0x31 0x3b 0x35 0x41)を送信することを意味します。[
1
;
5
A
データベースは、複数のエンドポイントに対する複数の公開鍵のterminfo
複数のシーケンス(値ベース)を記録します。$TERM
たとえば、
TERM=rxvt tput kdch1 | sed -n l
rxvt
キーを押したときにどのエスケープシーケンスが送信されるかを知らせますDelete。
現在の端末を使用して、特定のシーケンスに対応するキーを見つけることができます(ここではinfocmpinfocmp
と仮定)。ncurses
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
このようなキーの組み合わせはCtrl-Upデータベースに対応する項目がないため、それらの送信内容を理解するには、その端末のソースコードやマニュアルを読んでterminfo
ください。sed -n l
答え2
readline
GNUライブラリを介して提供されます。あなたはそれを調査する必要がありますman 3 readline
説明をご覧ください。
エスケープコードなどの意味についての\[A
情報も必要なようです。この情報はウィキペディアにあります。ANSIエスケープコード記事。
答え3
キーまたはキーの組み合わせによって生成されたエスケープシーケンスを確認する最も簡単な方法は、端末で+を押してCtrlから、知りたいキー/組み合わせを押すことです。v
同様のシーケンスが得られ、キーバインディングシステムが期待するエスケープ文字に変換するか、別の表現に^[Oa
変換する必要があります。^[
\e
\033
\x1b
これはandと呼ばれるEmacs関数で始まり、quoted-insert
BashとZshの主キーバインディングはEmacsを模倣しているため、これもコピーしました。
import rlcompleter
Bashは、Pythonの拡張やその他の機能でも使用されるGNU Readline入力ライブラリを介してそれらをインポートします。
からの説明ですオンラインマニュアルを読む:
quoted-insert
(C-q
またはC-v
)入力して文字を文字通り追加します。たとえば、キーシーケンスを挿入する方法は次のとおりです
C-q
。
これはうまくいくはずです何もないGNU Readlineに基づいています。
C-q
Zshの場合、Viモードでのみ元のEmacsバインディングを尊重しますが、皮肉なことに、デフォルトのC-v
Emacsに似た入力モードではまだ機能する独自の代替手段であるZLEを使用します。 (またはマニュアルページquoted-insert
で検索した場合は、2番目の結果ペアに主キーバインディングを一覧表示する必要があります。)zshzle
zshall
Ctrlニーモニックの場合は、+をリクエストvとして扱うことをお勧めします。Vエルバチーム。
答え4
Ctrl+はV特定の文字でのみ機能します(ボリュームキー、、、、、は表示されません)。 Cvは逆翻訳も許可しませんTab。つまり、既存のバインディングとそのキーが表すキーを見ることはできません。CapsPrint ScreenHomeEndPauseMute
最も重要な役割には効果的ですが、最善の方法は次を使用することです。
dumpkey -1 >> mapreference
フルキーコードテーブル(キーを押すたびに特定のキーボードが送信する信号)を取得します。これらのキーコードはマップファイル(Arch:/usr/share/kbd/keymap/*/**
フォルダにあります)と一致しますが、dumpkeys
すべてのマッピングが1つの場所に保存されるため、簡単です。
次に、入力した形式に基づいてテーブルを変換する必要があります。
ASCII変換テーブル
8進数
000 NUL 020 DLE 040 060 0 100 @ 120 P 140 ` 160 p
001 SOH 021 DC1 041 ! 061 1 101 A 121 Q 141 a 161 q
002 STX 022 DC2 042 " 062 2 102 B 122 R 142 b 162 r
003 ETX 023 DC3 043 # 063 3 103 C 123 S 143 c 163 s
004 EOT 024 DC4 044 $ 064 4 104 D 124 T 144 d 164 t
005 ENQ 025 NAK 045 % 065 5 105 E 125 U 145 e 165 u
006 ACK 026 SYN 046 & 066 6 106 F 126 V 146 f 166 v
007 BEL 027 ETB 047 ' 067 7 107 G 127 W 147 g 167 w
010 BS 030 CAN 050 ( 070 8 110 H 130 X 150 h 170 x
011 HT 031 EM 051 ) 071 9 111 I 131 Y 151 i 171 y
012 LF 032 SUB 052 * 072 : 112 J 132 Z 152 j 172 z
013 VT 033 ESC 053 + 073 ; 113 K 133 [ 153 k 173 {
014 FF 034 FS 054 , 074 < 114 L 134 \ 154 l 174 |
015 CR 035 GS 055 - 075 = 115 M 135 ] 155 m 175 }
016 SO 036 RS 056 . 076 > 116 N 136 ^ 156 n 176 ~
017 SI 037 US 057 / 077 ? 117 O 137 _ 157 o 177 DEL
バイナリ
0000000 NUL 0010000 DLE 0100000 0110000 0 1000000 @ 1010000 P 1100000 ` 1110000 p
0000001 SOH 0010001 DC1 0100001 ! 0110001 1 1000001 A 1010001 Q 1100001 a 1110001 q
0000010 STX 0010010 DC2 0100010 " 0110010 2 1000010 B 1010010 R 1100010 b 1110010 r
0000011 ETX 0010011 DC3 0100011 # 0110011 3 1000011 C 1010011 S 1100011 c 1110011 s
0000100 EOT 0010100 DC4 0100100 $ 0110100 4 1000100 D 1010100 T 1100100 d 1110100 t
0000101 ENQ 0010101 NAK 0100101 % 0110101 5 1000101 E 1010101 U 1100101 e 1110101 u
0000110 ACK 0010110 SYN 0100110 & 0110110 6 1000110 F 1010110 V 1100110 f 1110110 v
0000111 BEL 0010111 ETB 0100111 ' 0110111 7 1000111 G 1010111 W 1100111 g 1110111 w
0001000 BS 0011000 CAN 0101000 ( 0111000 8 1001000 H 1011000 X 1101000 h 1111000 x
0001001 HT 0011001 EM 0101001 ) 0111001 9 1001001 I 1011001 Y 1101001 i 1111001 y
0001010 LF 0011010 SUB 0101010 * 0111010 : 1001010 J 1011010 Z 1101010 j 1111010 z
0001011 VT 0011011 ESC 0101011 + 0111011 ; 1001011 K 1011011 [ 1101011 k 1111011 {
0001100 FF 0011100 FS 0101100 , 0111100 < 1001100 L 1011100 \ 1101100 l 1111100 |
0001101 CR 0011101 GS 0101101 - 0111101 = 1001101 M 1011101 ] 1101101 m 1111101 }
0001110 SO 0011110 RS 0101110 . 0111110 > 1001110 N 1011110 ^ 1101110 n 1111110 ~
0001111 SI 0011111 US 0101111 / 0111111 ? 1001111 O 1011111 _ 1101111 o 1111111 DEL
UTF-8
Unicode
Code Point Character UTF-8(hex) Name
U+0000 00 <control>
U+0001 01 <control>
U+0002 02 <control>
U+0003 03 <control>
U+0004 04 <control>
U+0005 05 <control>
U+0006 06 <control>
U+0007 07 <control>
U+0008 08 <control>
U+0009 09 <control>
U+000A 0a <control>
U+000B 0b <control>
U+000C 0c <control>
U+000D 0d <control>
U+000E 0e <control>
U+000F 0f <control>
U+0010 10 <control>
U+0011 11 <control>
U+0012 12 <control>
U+0013 13 <control>
U+0014 14 <control>
U+0015 15 <control>
U+0016 16 <control>
U+0017 17 <control>
U+0018 18 <control>
U+0019 19 <control>
U+001A 1a <control>
U+001B 1b <control>
U+001C 1c <control>
U+001D 1d <control>
U+001E 1e <control>
U+001F 1f <control>
U+0020 20 SPACE
U+0021 ! 21 EXCLAMATION MARK
U+0022 " 22 QUOTATION MARK
U+0023 # 23 NUMBER SIGN
U+0024 $ 24 DOLLAR SIGN
U+0025 % 25 PERCENT SIGN
U+0026 & 26 AMPERSAND
U+0027 ' 27 APOSTROPHE
U+0028 ( 28 LEFT PARENTHESIS
U+0029 ) 29 RIGHT PARENTHESIS
U+002A * 2a ASTERISK
U+002B + 2b PLUS SIGN
U+002C , 2c COMMA
U+002D - 2d HYPHEN-MINUS
U+002E . 2e FULL STOP
U+002F / 2f SOLIDUS
U+0030 0 30 DIGIT ZERO
U+0031 1 31 DIGIT ONE
U+0032 2 32 DIGIT TWO
U+0033 3 33 DIGIT THREE
U+0034 4 34 DIGIT FOUR
U+0035 5 35 DIGIT FIVE
U+0036 6 36 DIGIT SIX
U+0037 7 37 DIGIT SEVEN
U+0038 8 38 DIGIT EIGHT
U+0039 9 39 DIGIT NINE
U+003A : 3a COLON
U+003B ; 3b SEMICOLON
U+003C < 3c LESS-THAN SIGN
U+003D = 3d EQUALS SIGN
U+003E > 3e GREATER-THAN SIGN
U+003F ? 3f QUESTION MARK
U+0040 @ 40 COMMERCIAL AT
U+0041 A 41 LATIN CAPITAL LETTER A
U+0042 B 42 LATIN CAPITAL LETTER B
U+0043 C 43 LATIN CAPITAL LETTER C
U+0044 D 44 LATIN CAPITAL LETTER D
U+0045 E 45 LATIN CAPITAL LETTER E
U+0046 F 46 LATIN CAPITAL LETTER F
U+0047 G 47 LATIN CAPITAL LETTER G
U+0048 H 48 LATIN CAPITAL LETTER H
U+0049 I 49 LATIN CAPITAL LETTER I
U+004A J 4a LATIN CAPITAL LETTER J
U+004B K 4b LATIN CAPITAL LETTER K
U+004C L 4c LATIN CAPITAL LETTER L
U+004D M 4d LATIN CAPITAL LETTER M
U+004E N 4e LATIN CAPITAL LETTER N
U+004F O 4f LATIN CAPITAL LETTER O
U+0050 P 50 LATIN CAPITAL LETTER P
U+0051 Q 51 LATIN CAPITAL LETTER Q
U+0052 R 52 LATIN CAPITAL LETTER R
U+0053 S 53 LATIN CAPITAL LETTER S
U+0054 T 54 LATIN CAPITAL LETTER T
U+0055 U 55 LATIN CAPITAL LETTER U
U+0056 V 56 LATIN CAPITAL LETTER V
U+0057 W 57 LATIN CAPITAL LETTER W
U+0058 X 58 LATIN CAPITAL LETTER X
U+0059 Y 59 LATIN CAPITAL LETTER Y
U+005A Z 5a LATIN CAPITAL LETTER Z
U+005B [ 5b LEFT SQUARE BRACKET
U+005C \ 5c REVERSE SOLIDUS
U+005D ] 5d RIGHT SQUARE BRACKET
U+005E ^ 5e CIRCUMFLEX ACCENT
U+005F _ 5f LOW LINE
U+0060 ` 60 GRAVE ACCENT
U+0061 a 61 LATIN SMALL LETTER A
U+0062 b 62 LATIN SMALL LETTER B
U+0063 c 63 LATIN SMALL LETTER C
U+0064 d 64 LATIN SMALL LETTER D
U+0065 e 65 LATIN SMALL LETTER E
U+0066 f 66 LATIN SMALL LETTER F
U+0067 g 67 LATIN SMALL LETTER G
U+0068 h 68 LATIN SMALL LETTER H
U+0069 i 69 LATIN SMALL LETTER I
U+006A j 6a LATIN SMALL LETTER J
U+006B k 6b LATIN SMALL LETTER K
U+006C l 6c LATIN SMALL LETTER L
U+006D m 6d LATIN SMALL LETTER M
U+006E n 6e LATIN SMALL LETTER N
U+006F o 6f LATIN SMALL LETTER O
U+0070 p 70 LATIN SMALL LETTER P
U+0071 q 71 LATIN SMALL LETTER Q
U+0072 r 72 LATIN SMALL LETTER R
U+0073 s 73 LATIN SMALL LETTER S
U+0074 t 74 LATIN SMALL LETTER T
U+0075 u 75 LATIN SMALL LETTER U
U+0076 v 76 LATIN SMALL LETTER V
U+0077 w 77 LATIN SMALL LETTER W
U+0078 x 78 LATIN SMALL LETTER X
U+0079 y 79 LATIN SMALL LETTER Y
U+007A z 7a LATIN SMALL LETTER Z
U+007B { 7b LEFT CURLY BRACKET
U+007C | 7c VERTICAL LINE
U+007D } 7d RIGHT CURLY BRACKET
U+007E ~ 7e TILDE
U+007F 7f <control>
U+0080 c2 80 <control>
U+0081 c2 81 <control>
U+0082 c2 82 <control>
U+0083 c2 83 <control>
U+0084 c2 84 <control>
U+0085 c2 85 <control>
U+0086 c2 86 <control>
U+0087 c2 87 <control>
U+0088 c2 88 <control>
U+0089 c2 89 <control>
U+008A c2 8a <control>
U+008B c2 8b <control>
U+008C c2 8c <control>
U+008D c2 8d <control>
U+008E c2 8e <control>
U+008F c2 8f <control>
U+0090 c2 90 <control>
U+0091 c2 91 <control>
U+0092 c2 92 <control>
U+0093 c2 93 <control>
U+0094 c2 94 <control>
U+0095 c2 95 <control>
U+0096 c2 96 <control>
U+0097 c2 97 <control>
U+0098 c2 98 <control>
U+0099 c2 99 <control>
U+009A c2 9a <control>
U+009B c2 9b <control>
U+009C c2 9c <control>
U+009D c2 9d <control>
U+009E c2 9e <control>
U+009F c2 9f <control>
U+00A0 c2 a0 NO-BREAK SPACE
U+00A1 ¡ c2 a1 INVERTED EXCLAMATION MARK
U+00A2 ¢ c2 a2 CENT SIGN
U+00A3 £ c2 a3 POUND SIGN
U+00A4 ¤ c2 a4 CURRENCY SIGN
U+00A5 ¥ c2 a5 YEN SIGN
U+00A6 ¦ c2 a6 BROKEN BAR
U+00A7 § c2 a7 SECTION SIGN
U+00A8 ¨ c2 a8 DIAERESIS
U+00A9 © c2 a9 COPYRIGHT SIGN
U+00AA ª c2 aa FEMININE ORDINAL INDICATOR
U+00AB « c2 ab LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
U+00AC ¬ c2 ac NOT SIGN
U+00AD c2 ad SOFT HYPHEN
U+00AE ® c2 ae REGISTERED SIGN
U+00AF ¯ c2 af MACRON
U+00B0 ° c2 b0 DEGREE SIGN
U+00B1 ± c2 b1 PLUS-MINUS SIGN
U+00B2 ² c2 b2 SUPERSCRIPT TWO
U+00B3 ³ c2 b3 SUPERSCRIPT THREE
U+00B4 ´ c2 b4 ACUTE ACCENT
U+00B5 µ c2 b5 MICRO SIGN
U+00B6 ¶ c2 b6 PILCROW SIGN
U+00B7 · c2 b7 MIDDLE DOT
U+00B8 ¸ c2 b8 CEDILLA
U+00B9 ¹ c2 b9 SUPERSCRIPT ONE
U+00BA º c2 ba MASCULINE ORDINAL INDICATOR
U+00BB » c2 bb RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
U+00BC ¼ c2 bc VULGAR FRACTION ONE QUARTER
U+00BD ½ c2 bd VULGAR FRACTION ONE HALF
U+00BE ¾ c2 be VULGAR FRACTION THREE QUARTERS
U+00BF ¿ c2 bf INVERTED QUESTION MARK
U+00C0 À c3 80 LATIN CAPITAL LETTER A WITH GRAVE
U+00C1 Á c3 81 LATIN CAPITAL LETTER A WITH ACUTE
U+00C2 Â c3 82 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
U+00C3 Ã c3 83 LATIN CAPITAL LETTER A WITH TILDE
U+00C4 Ä c3 84 LATIN CAPITAL LETTER A WITH DIAERESIS
U+00C5 Å c3 85 LATIN CAPITAL LETTER A WITH RING ABOVE
U+00C6 Æ c3 86 LATIN CAPITAL LETTER AE
U+00C7 Ç c3 87 LATIN CAPITAL LETTER C WITH CEDILLA
U+00C8 È c3 88 LATIN CAPITAL LETTER E WITH GRAVE
U+00C9 É c3 89 LATIN CAPITAL LETTER E WITH ACUTE
U+00CA Ê c3 8a LATIN CAPITAL LETTER E WITH CIRCUMFLEX
U+00CB Ë c3 8b LATIN CAPITAL LETTER E WITH DIAERESIS
U+00CC Ì c3 8c LATIN CAPITAL LETTER I WITH GRAVE
U+00CD Í c3 8d LATIN CAPITAL LETTER I WITH ACUTE
U+00CE Î c3 8e LATIN CAPITAL LETTER I WITH CIRCUMFLEX
U+00CF Ï c3 8f LATIN CAPITAL LETTER I WITH DIAERESIS
U+00D0 Ð c3 90 LATIN CAPITAL LETTER ETH
U+00D1 Ñ c3 91 LATIN CAPITAL LETTER N WITH TILDE
U+00D2 Ò c3 92 LATIN CAPITAL LETTER O WITH GRAVE
U+00D3 Ó c3 93 LATIN CAPITAL LETTER O WITH ACUTE
U+00D4 Ô c3 94 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
U+00D5 Õ c3 95 LATIN CAPITAL LETTER O WITH TILDE
U+00D6 Ö c3 96 LATIN CAPITAL LETTER O WITH DIAERESIS
U+00D7 × c3 97 MULTIPLICATION SIGN
U+00D8 Ø c3 98 LATIN CAPITAL LETTER O WITH STROKE
U+00D9 Ù c3 99 LATIN CAPITAL LETTER U WITH GRAVE
U+00DA Ú c3 9a LATIN CAPITAL LETTER U WITH ACUTE
U+00DB Û c3 9b LATIN CAPITAL LETTER U WITH CIRCUMFLEX
U+00DC Ü c3 9c LATIN CAPITAL LETTER U WITH DIAERESIS
U+00DD Ý c3 9d LATIN CAPITAL LETTER Y WITH ACUTE
U+00DE Þ c3 9e LATIN CAPITAL LETTER THORN
U+00DF ß c3 9f LATIN SMALL LETTER SHARP S
U+00E0 à c3 a0 LATIN SMALL LETTER A WITH GRAVE
U+00E1 á c3 a1 LATIN SMALL LETTER A WITH ACUTE
U+00E2 â c3 a2 LATIN SMALL LETTER A WITH CIRCUMFLEX
U+00E3 ã c3 a3 LATIN SMALL LETTER A WITH TILDE
U+00E4 ä c3 a4 LATIN SMALL LETTER A WITH DIAERESIS
U+00E5 å c3 a5 LATIN SMALL LETTER A WITH RING ABOVE
U+00E6 æ c3 a6 LATIN SMALL LETTER AE
U+00E7 ç c3 a7 LATIN SMALL LETTER C WITH CEDILLA
U+00E8 è c3 a8 LATIN SMALL LETTER E WITH GRAVE
U+00E9 é c3 a9 LATIN SMALL LETTER E WITH ACUTE
U+00EA ê c3 aa LATIN SMALL LETTER E WITH CIRCUMFLEX
U+00EB ë c3 ab LATIN SMALL LETTER E WITH DIAERESIS
U+00EC ì c3 ac LATIN SMALL LETTER I WITH GRAVE
U+00ED í c3 ad LATIN SMALL LETTER I WITH ACUTE
U+00EE î c3 ae LATIN SMALL LETTER I WITH CIRCUMFLEX
U+00EF ï c3 af LATIN SMALL LETTER I WITH DIAERESIS
U+00F0 ð c3 b0 LATIN SMALL LETTER ETH
U+00F1 ñ c3 b1 LATIN SMALL LETTER N WITH TILDE
U+00F2 ò c3 b2 LATIN SMALL LETTER O WITH GRAVE
U+00F3 ó c3 b3 LATIN SMALL LETTER O WITH ACUTE
U+00F4 ô c3 b4 LATIN SMALL LETTER O WITH CIRCUMFLEX
U+00F5 õ c3 b5 LATIN SMALL LETTER O WITH TILDE
U+00F6 ö c3 b6 LATIN SMALL LETTER O WITH DIAERESIS
U+00F7 ÷ c3 b7 DIVISION SIGN
U+00F8 ø c3 b8 LATIN SMALL LETTER O WITH STROKE
U+00F9 ù c3 b9 LATIN SMALL LETTER U WITH GRAVE
U+00FA ú c3 ba LATIN SMALL LETTER U WITH ACUTE
U+00FB û c3 bb LATIN SMALL LETTER U WITH CIRCUMFLEX
U+00FC ü c3 bc LATIN SMALL LETTER U WITH DIAERESIS
U+00FD ý c3 bd LATIN SMALL LETTER Y WITH ACUTE
U+00FE þ c3 be LATIN SMALL LETTER THORN
U+00FF ÿ c3 bf LATIN SMALL LETTER Y WITH DIAERESIS
10進数/16進数
Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex
0 00 NUL 16 10 DLE 32 20 48 30 0 64 40 @ 80 50 P 96 60 ` 112 70 p
1 01 SOH 17 11 DC1 33 21 ! 49 31 1 65 41 A 81 51 Q 97 61 a 113 71 q
2 02 STX 18 12 DC2 34 22 " 50 32 2 66 42 B 82 52 R 98 62 b 114 72 r
3 03 ETX 19 13 DC3 35 23 # 51 33 3 67 43 C 83 53 S 99 63 c 115 73 s
4 04 EOT 20 14 DC4 36 24 $ 52 34 4 68 44 D 84 54 T 100 64 d 116 74 t
5 05 ENQ 21 15 NAK 37 25 % 53 35 5 69 45 E 85 55 U 101 65 e 117 75 u
6 06 ACK 22 16 SYN 38 26 & 54 36 6 70 46 F 86 56 V 102 66 f 118 76 v
7 07 BEL 23 17 ETB 39 27 ' 55 37 7 71 47 G 87 57 W 103 67 g 119 77 w
8 08 BS 24 18 CAN 40 28 ( 56 38 8 72 48 H 88 58 X 104 68 h 120 78 x
9 09 HT 25 19 EM 41 29 ) 57 39 9 73 49 I 89 59 Y 105 69 i 121 79 y
10 0A LF 26 1A SUB 42 2A * 58 3A : 74 4A J 90 5A Z 106 6A j 122 7A z
11 0B VT 27 1B ESC 43 2B + 59 3B ; 75 4B K 91 5B [ 107 6B k 123 7B {
12 0C FF 28 1C FS 44 2C , 60 3C < 76 4C L 92 5C \ 108 6C l 124 7C |
13 0D CR 29 1D GS 45 2D - 61 3D = 77 4D M 93 5D ] 109 6D m 125 7D }
14 0E SO 30 1E RS 46 2E . 62 3E > 78 4E N 94 5E ^ 110 6E n 126 7E ~
15 0F SI 31 1F US 47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o 127 7F DEL
各テーブルの最初の32文字は予約された制御文字です。制御文字は印刷可能文字ではありません。 PCにコマンドを送信するために使用されます。
これで面白いですが便利なものが必要な場合は、作業中のエスケープシーケンス挿入スクリプトを参照してください。fzf
andripgrep
とfd-find
(rust
の書き込み)を使用しますfind
が、あなたの用語に基づいています。 Inは、用語機能をウィンドウに印刷し、カーソルの下のコマンドに対して用語情報のマニュアルページを繰り返し検索することを可能にします(名前 - >エスケープシーケンス順にあります)。
選択してクリックすると、Enter引用符の間と後ろのコマンドラインに印刷されますが、実行されませんecho -e " "
(愚かなことをする前に表示できるように)。
#!/bin/bash !
fzfcmp () {
local term
local FZF_DEFAULT_COMMAND
FZF_DEFAULT_COMMAND="infocmp $TERM -1"
term="$(
infocmp "${_termchoice:-"$TERM"}" -1 | tr '=' '\n' | \
tr '\t' '' | \
sed 's/,$//' | fzf \
--preview='man terminfo | rg -C10 -e {q}' \
--preview-window='right:80:wrap' --phony \
--bind="f9:reload:changeterm"
unset _termchoice
)"
if test -n "$(rg -e 'echo' <<<"$READLINE_LINE")"; then
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT} $(awk -F= '{print $1}' <<<"${term:-''}" \
| sed 's/,$//') ${READLINE_LINE:$READLINE_POINT}";
else
READLINE_LINE="$(echo 'echo -e' \"${READLINE_LINE:0:$READLINE_POINT} $(awk -F= '{print $1}' <<<"${term:-''}" \
| sed 's/,$//') ${READLINE_LINE:$READLINE_POINT}\")"
fi
READLINE_POINT=$(( ${#term} + READLINE_POINT ))
unset term
}
termfilter () {
Fzvar="$@"
local Fzvar
query="$Fzvar:-"command rg {}"j
fd -uu . -t f --full-path /usr/share/terminfo -x rg --files-with-matches "\${_query:-"${1:-"/E}"}"
}
fztin () {
if [[ -z "$1" ]]; then
Fvar="."; else
Fvar="$1"
fi
local query
_query "$@"
termfilter \
| awk -F/ '{print $NF}' \
| sort -u \
| fzf --bind="alt-p:execute:echo $(infocmp {}) >> $HOME/tmp/{}.tmp" \
--preview-window "right:85:wrap" \
--preview="cnat; infocmp {} -l ";
}
changeterm () {
local _termchoice
eval "${_termchoice=+:$(fztin "$@")}" | fzfcmp
}
bind -x '"\et": fzfcmp'
#bind -x '"\em": changeterm '
Alt+機能はMまだ作業中ですが、利用可能なすべての端末を印刷してから端末を選択すると、別のコマンドに切り替えて、探しているコマンドラインエスケープシーケンスがある端末を確認できます。