JAP Asked: 2023-08-14 04:48:31 +0800 CST2023-08-14 04:48:31 +0800 CST 2023-08-14 04:48:31 +0800 CST 如何在 Ubuntu 中的 GNU nano 编辑器中处理插入符 + 字符选项 772 极其简单的问题。在附图中,大多数选项似乎都需要^同时打字和另一个字符。问题是,要打字,^我需要按Shift + 6,此时我实际上正在打字,^然后才有机会按第二个字符,例如^T。 keyboard-shortcuts 1 个回答 Voted Best Answer Stéphane Chazelas 2023-08-14T14:36:14+08:002023-08-14T14:36:14+08:00 ^O是一个字符的表示,通常是您的终端在按Ctrl+时发送的字符o,而不是按键。/dev/tty*在终端中,应用程序通过从设备文件读取字节流来获取输入/dev/pt*,而不是通过处理键盘事件来获取输入,这些字节是当您按下某个键或组合键时终端发送的字节。 使用基于 ASCII 的系统上使用的基于 ASCII 的终端(目前的规范,尽管大多数系统/终端将其扩展为支持非美式英语字符),当您键入 时,终端会发送字节 97 到 122(a或z)0x60 | letter,代表ASCII 中的ato字符;z如果您在按住密钥的同时执行相同操作Shift,它们会以ASCII 形式发送字节 65 到 90 ( 0x40 | letter) 。AZ 使用 时Ctrl,它们发送字节 1 到 26 ( 0x00 | letter1)。 现在,字节 0 到 31 是控制字符,它们没有字形、字体表示。他们有名字(参见man ascii)。就像 9(在Ctrl+i或上发送⭾)是制表符,10 是换行符(在Ctrl+上发送j),13 是回车符(在Ctrl+m或 上发送Enter,但要注意终端驱动程序经常将其转换为换行符)。 Ctrl+上发送的字符o是移入控制字符。如果nano用<shift-in> Write Out代替^O Write Out,我敢打赌大多数人都不知道如何发送该控制字符。 ^A... ^Z(以及^[ ^\ ^] ^^ ^_27..31、0、127 ^@^ ^?)有时称为帽子表示法,是这些字符的常见视觉表示。您会发现它也是由cat -vt或 之后的终端线路规则使用的stty echoctl。 其他符号包括\CA或\C-A。某些控制字符在 C 字符串中具有表示形式,例如\nfor ^J/newline、\afor ^G/BEL。 但^A/\C-A更有助于指示如何使用键盘生成它们。 1@在 ASCII 中为 0x40 ?,在 0x3f 中为 0x40,因此该^X字符可以通过 获得0x40 ^ X,即 X 的字节值,第二个最高有效位被翻转。您还可以找到字节 0x80 到 0x9f 和 0xa0 到 0xff 的M-^X和M-X表示,仅 ASCII 终端用于在Meta+ Ctrl+X和Meta+上发送X,尽管现在它们宁愿发送 ESC ( ^[) 后跟^X/ X,因为第 8 位用于代替非 ASCII 字符,我预计nano这些天会期望^[U而不是字节 0xd5 的意思,M-U Undo因为字节 0xd5 也被发现作为亚美尼亚字符 U+0540 到 U+057F 的 UTF-8 编码的第一个字节,或者在 ISO8859Õ中-1(又名拉丁语1)
^O
是一个字符的表示,通常是您的终端在按Ctrl+时发送的字符o,而不是按键。/dev/tty*
在终端中,应用程序通过从设备文件读取字节流来获取输入/dev/pt*
,而不是通过处理键盘事件来获取输入,这些字节是当您按下某个键或组合键时终端发送的字节。使用基于 ASCII 的系统上使用的基于 ASCII 的终端(目前的规范,尽管大多数系统/终端将其扩展为支持非美式英语字符),当您键入 时,终端会发送字节 97 到 122(a或z)
0x60 | letter
,代表ASCII 中的a
to字符;z
如果您在按住密钥的同时执行相同操作Shift,它们会以ASCII 形式发送字节 65 到 90 (0x40 | letter
) 。A
Z
使用 时Ctrl,它们发送字节 1 到 26 (
0x00 | letter
1)。现在,字节 0 到 31 是控制字符,它们没有字形、字体表示。他们有名字(参见
man ascii
)。就像 9(在Ctrl+i或上发送⭾)是制表符,10 是换行符(在Ctrl+上发送j),13 是回车符(在Ctrl+m或 上发送Enter,但要注意终端驱动程序经常将其转换为换行符)。Ctrl+上发送的字符o是移入控制字符。如果
nano
用<shift-in> Write Out
代替^O Write Out
,我敢打赌大多数人都不知道如何发送该控制字符。^A
...^Z
(以及^[
^\
^]
^^
^_
27..31、0、127^@
^^?
)有时称为帽子表示法,是这些字符的常见视觉表示。您会发现它也是由cat -vt
或 之后的终端线路规则使用的stty echoctl
。其他符号包括
\CA
或\C-A
。某些控制字符在 C 字符串中具有表示形式,例如\n
for^J
/newline、\a
for^G
/BEL。但
^A
/\C-A
更有助于指示如何使用键盘生成它们。1
@
在 ASCII 中为 0x40?
,在 0x3f 中为 0x40,因此该^X
字符可以通过 获得0x40 ^ X
,即 X 的字节值,第二个最高有效位被翻转。您还可以找到字节 0x80 到 0x9f 和 0xa0 到 0xff 的M-^X
和M-X
表示,仅 ASCII 终端用于在Meta+ Ctrl+X和Meta+上发送X,尽管现在它们宁愿发送 ESC (^[
) 后跟^X
/X
,因为第 8 位用于代替非 ASCII 字符,我预计nano
这些天会期望^[U
而不是字节 0xd5 的意思,M-U Undo
因为字节 0xd5 也被发现作为亚美尼亚字符 U+0540 到 U+057F 的 UTF-8 编码的第一个字节,或者在 ISO8859Õ
中-1(又名拉丁语1)