
我使用的是 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 會話中用於轉義到命令模式,因此能夠找到它是很有用的。