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

相關內容