如何在 zsh 中向上捲動一行?

如何在 zsh 中向上捲動一行?

我正在使用帶有 bash 的 iTerm2,並通過鍵入 向上滾動歷史緩衝區一行Shift+Up。當我切換到 zsh shell 時,它只輸入2A.如何僅使用鍵盤在 zsh 中向上滾動一行,最好使用Shift+Up

答案1

我認為這取決於終端模擬器。

例如,與桀騁,在 konsole 中它可以工作Shift+ Up
在 xterm 中不行,但它可以工作Shift+ PgUp

看起來 iTerm2 應該預設工作:

  • 向上移動一行
  • 向下移動一行

答案2

up-history您正在尋找的功能由和小部件提供up-line-or-historydown-history以及down-line-or-history用於向下滾動)。

預設up-line-or-history應該綁定到,Up但您可以使用 . 將其綁定到(幾乎)任何其他鍵序列bindkey。在終端機中,特殊鍵(不產生可列印字元的鍵)產生一系列鍵,然後由 shell 解釋 - 或不解釋,如2Afor Shift+範例Up所示。這些按鍵序列在終端模擬器之間也可能有所不同。為了獲得適合您的終端的正確按鍵序列,請打開它,然後按Ctrl+,v然後按所需的組合鍵 ( Shift+ Up)。在我的終端(rxvt-unicode)上我得到了^[[a.然後您可以將序列綁定到up-historywidged:

bindkey <in-string> up-history

只需替換<in-string>為找到的序列即可。就我而言

bindkey '^[[a' up-history

註1:您很可能需要將序列放在引號中,因為它可能包含將由zsh其他方式解釋的字元。

筆記2:某些按鍵組合可能會產生相同的按鍵序列。例如,與Ctrl+組合的字母Shift通常與僅與 組合的相同字母沒有區別CtrlCtrl+ Shift+aCtrl+通常a都會產生^A.在某些終端模擬器中,Ctrl+Shift組合甚至用於終端本身的快捷方式,並且在 shell 中不可用。

相關內容