尝试配置 ZSH 时,什么是“^[b”backward-word'?

尝试配置 ZSH 时,什么是“^[b”backward-word'?

我使用的是 MAC,我正在尝试找出在 Iterm2 上运行的 ZSH 的快捷方式。

当我在 shell 中输入 bindkey 时,我看到(以及其他映射)以下内容:

"^[b" backward-word
"^[f" forward-word

我知道 ^ 是 Control 键。但是如果我按 Ctrl + [ + f,它不会向前移动一个字。

我缺少什么?

答案1

^通常是 control,但^[实际上意味着 Escape 或 Alt(或者 meta,如果你喜欢 emacs)。

因此,您可以按EscbEscf来获取这些组合键。

默认情况下,Alt 在 Mac 终端上不起作用,但 iTerm2 有一个设置:“选项充当 [ ] Normal [ ] Meta [ ] +Esc”。你想要+Esc。

iTerm2 Option 键设置的屏幕截图。

答案2

其实^[就是Alt键。因此,在您的情况下,终端(Iterm2)使用 Alt + b 和 Alt + f 来向后和向前移动单词。这是由你的终端控制的,与 zsh 无关。

答案3

延长先生回答:

确实^[bESC+b或( Meta/Alt+ b)。您可以通过使用Ctrl+继续显示字符v。在这种情况下,您会发现以下内容:

  • Ctrl+ v Ctrl+b

    ^B

  • Ctrl+ v Meta+b

    ^[b

  • Ctrl+v ESC b

    ^[b

此外,您还可以在 zsh 手册中找到:

backward-word (ESC-B ESC-b) (unbound) (unbound)
    Move to the beginning of the previous word.

类似地forward-word

forward-word (ESC-F ESC-f) (unbound) (unbound)
              Move to the beginning of the next word.

答案4

^表示法在 GNU 世界中常用来表示控制字符,其中^aCtrl-A(ASCII 1,其中 A 是 ASCII 65)。换句话说,它是“使用在此之前的字符 64 个插槽”的简写。

密钥ESC是 ASCII 27,位于 之前的 64 个步骤[,因此^[是 ESC 的简写。

在 GNU Emacs 编辑器中使用了多个修饰键:CTRL、META 等。例如,CTRL-f 将光标向前移动一个字符,META-f 将光标向前移动一个单词。

为了适应许多没有 META 键的键盘,约定“ESC 意味着下一个字符被认为是用 META 键按下的”。因此,在 GNU Emacs 中,按 ESC-f 会将光标向前移动一个字。

请注意,如今Ctrl-[提供 ESC 字符的情况非常罕见,但它可能隐藏在其他一些 Ctrl 组合中。例如,它^^仍然在 telnet 会话中用于转义到命令模式,因此能够找到它是很有用的。

相关内容