如何在 Ubuntu 中的 GNU nano 编辑器中处理插入符 + 字符选项

如何在 Ubuntu 中的 GNU nano 编辑器中处理插入符 + 字符选项

极其简单的问题。在附图中,大多数选项似乎都需要^同时打字和另一个字符。问题是,要输入,^我需要按Shift + 6,此时我实际上正在输入,^然后才有机会按第二个字符,例如^T

在此输入图像描述

答案1

^O是一个表示特点,通常是您的终端在按Ctrl+ o(而不是按键)时发送的。在终端中,应用程序通过从/dev/tty*设备文件读取字节流来获取输入/dev/pt*,而不是通过处理键盘事件来获取输入,这些字节是当您按下某个键或组合键时终端发送的字节。

使用基于 ASCII 的系统上使用的基于 ASCII 的终端(目前的规范,尽管大多数系统/终端将其扩展为支持非美式英语字符),当您键入 时az终端会发送字节 97 到 122(或0x60 | letter),代表ASCII 中的ato字符;z如果您在按住密钥的同时执行相同操作,它们会以ASCII 形式Shift发送字节 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-^XM-X表示,仅 ASCII 终端用于在Meta+ Ctrl+XMeta+上发送X,尽管现在它们宁愿发送 ESC ( ^[) 后跟^X/ X,因为第 8 位用于代替非 ASCII 字符,我预计nano这些天会期望^[U而不是字节 0xd5 的意思,因为M-U Undo字节 0xd5 也被发现作为亚美尼亚字符 U+0540 到 U+057F 的 UTF-8 编码的第一个字节,或者Õ在 ISO8859 中-1(又名拉丁语1)

相关内容