因此,我对终端(或更准确地说是终端仿真器)中转义序列的概念以及它们与屏幕bindkey
命令的关系感到非常困惑。我正在查看在.screenrc
互联网上找到的一些示例文件,其中我看到了以下配置:
# switch windows with F3 (prev) and F4 (next)
bindkey "^[OR" prev
bindkey "^[OS" next
# switch layouts with Ctrl+F3 (prev layout) and Ctrl+F4 (next)
bindkey "^[O1;5R" layout prev
bindkey "^[O1;5S" layout next
我不知道为什么,例如,序列^[0R
意味着F3
和序列^[01;5R
意味着Ctrl+F3
。是否有此类序列的表格?
此外,这些序列让我想起了用于在终端提示中配置颜色的序列(例如使用$PS1
env 变量),例如\[\033[0m\]
重置和\[\033[30m\]
前景黑色。这两个“代码序列”之间究竟有什么关系,还是只是我的纯粹想象?
好问题。
是的,这些是 ANSI 转义码。
您可以在此处查看 VT100 的 ANSI 转义码列表: http ://www.braun-home.net/michael/info/misc/VT100_commands.htm但有一种更快的方法 - 在您的终端仿真器中按 Control-v然后 Control-F3例如,你会看到这个:
里面
man bash
说:请 注意,它
^[
本身Escape位于quoted-insert
为了更好地理解它 - 正如您已经知道的那样,有一些ANSI 转义码用于选择使用 键的颜色。
Escape
有几种方法可以输入文字Escape
——例如,我们可以使用八进制表示法,因为我们知道Escape
在 ASCII 表中是 \033:我们还可以使用
\e
某些实现printf
理解的反斜杠转义:但您也可以使用
quoted-insert
插入文字Escape
- 将光标指向 的位置\e
,将其移除,按 Control-v然后按 Escape。你会得到这个:请注意,当您在终端仿真器中执行此操作时,
^[
它将被视为单个字符。复制上面的行并粘贴到您的终端仿真器将不起作用,因为您将得到 2 个单独的字符而不是一个。