我使用的是 MAC,我正在尝试找出在 Iterm2 上运行的 ZSH 的快捷方式。
当我在 shell 中输入 bindkey 时,我看到(以及其他映射)以下内容:
"^[b" backward-word
"^[f" forward-word
我知道 ^ 是 Control 键。但是如果我按 Ctrl + [ + f,它不会向前移动一个字。
我缺少什么?
答案1
^
通常是 control,但^[
实际上意味着 Escape 或 Alt(或者 meta,如果你喜欢 emacs)。
因此,您可以按Escb或Escf来获取这些组合键。
默认情况下,Alt 在 Mac 终端上不起作用,但 iTerm2 有一个设置:“选项充当 [ ] Normal [ ] Meta [ ] +Esc”。你想要+Esc。
答案2
其实^[
就是Alt键。因此,在您的情况下,终端(Iterm2)使用 Alt + b 和 Alt + f 来向后和向前移动单词。这是由你的终端控制的,与 zsh 无关。
答案3
延长先生回答:
确实^[b
是ESC+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 世界中常用来表示控制字符,其中^a
Ctrl-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 会话中用于转义到命令模式,因此能够找到它是很有用的。