最近,我一直在查看bash快捷键,并尝试为我的tmux激活键找到合适的键。
根据https://en.wikipedia.org/wiki/Bash_(Unix_shell),我发现它很有趣,ctrl + m
并且ctrl + q
没有在bash快捷方式中使用。
为什么不使用它们?我觉得ctrl + m
很方便。
这两种组合是否是设计要DIY (define it yourself)
使用的?还是还有另一个故事?
最近,我一直在查看bash快捷键,并尝试为我的tmux激活键找到合适的键。
根据https://en.wikipedia.org/wiki/Bash_(Unix_shell),我发现它很有趣,ctrl + m
并且ctrl + q
没有在bash快捷方式中使用。
为什么不使用它们?我觉得ctrl + m
很方便。
这两种组合是否是设计要DIY (define it yourself)
使用的?还是还有另一个故事?
Answers:
Ctrl + M发送与终端中的Enter键相同的字符(RET)。程序无法区分它们,因此无法单独配置这些键。
默认情况下,Ctrl + Q已用于XON,因此Bash无法使用Ctrl + Q ,但是您仍然应该能够在tmux中使用它,因为tmux使用原始输入模式。
一个GUI程序可以从键盘上读取,已用修饰符Ctrl按下了键m,并使用Ctrl + m作为快捷方式,但是shell或任何终端程序都可以接收Ctrl + Key组合,就像从0到26的ASCII字符一样
Ctrl+@ = 0
Ctrl+A = 1
Ctrl+B = 2
等等。您可以尝试此以查看值
cat ctrlkeys <<EOF
^A^B^C^D^E^F
EOF
od -c ctrlkeys
0000000 001 002 003 004 005 006 \n
要输入值,请在按Ctrl + [af]之前按Ctrl + v,以使它们未解释为原始值。
当您查看ascii(7)表时,您会在表中看到控制代码,其左侧带有相应的字符@ .. Z。例如
015 13 0D CR '\r' (carriage ret) 115 77 4D M
要么
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
在bash之前解释控制代码的下一层是stty(更改并打印终端设置)
stty -a
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
有关lnext
or start
和的含义,请参见stty(1)stop
。
另请参见readline(3)作为bash,其他GNU cli程序使用该库来控制输入行,当然还包括bash(1)/ READLINE,这是bash手册页的readline部分。
注意:XYZ(NUM)表示NUM节中的手册页XYZ,因此的结果man NUM XYZ
。
C-q
到同一事物C-v
,该函数quoted-insert
对于弄清由键和键组合生成的转义代码很有用。这是Readline手册的相关部分:tiswww.case.edu/php/chet/readline/readline.html#SEC9
ALT + m
更加方便,恕我直言。