![如何在 zsh 中向上捲動一行?](https://rvso.com/image/1475787/%E5%A6%82%E4%BD%95%E5%9C%A8%20zsh%20%E4%B8%AD%E5%90%91%E4%B8%8A%E6%8D%B2%E5%8B%95%E4%B8%80%E8%A1%8C%EF%BC%9F.png)
我正在使用帶有 bash 的 iTerm2,並通過鍵入 向上滾動歷史緩衝區一行Shift+Up
。當我切換到 zsh shell 時,它只輸入2A
.如何僅使用鍵盤在 zsh 中向上滾動一行,最好使用Shift+Up
?
答案1
我認為這取決於終端模擬器。
例如,與桀騁,在 konsole 中它可以工作Shift+ Up。
在 xterm 中不行,但它可以工作Shift+ PgUp。
看起來 iTerm2 應該預設工作:
- ⌘ ↑向上移動一行
- ⌘ ↓向下移動一行
答案2
up-history
您正在尋找的功能由和小部件提供up-line-or-history
(down-history
以及down-line-or-history
用於向下滾動)。
預設up-line-or-history
應該綁定到,Up但您可以使用 . 將其綁定到(幾乎)任何其他鍵序列bindkey
。在終端機中,特殊鍵(不產生可列印字元的鍵)產生一系列鍵,然後由 shell 解釋 - 或不解釋,如2A
for Shift+範例Up所示。這些按鍵序列在終端模擬器之間也可能有所不同。為了獲得適合您的終端的正確按鍵序列,請打開它,然後按Ctrl+,v然後按所需的組合鍵 ( Shift+ Up)。在我的終端(rxvt-unicode)上我得到了^[[a
.然後您可以將序列綁定到up-history
widged:
bindkey <in-string> up-history
只需替換<in-string>
為找到的序列即可。就我而言
bindkey '^[[a' up-history
註1:您很可能需要將序列放在引號中,因為它可能包含將由zsh
其他方式解釋的字元。
筆記2:某些按鍵組合可能會產生相同的按鍵序列。例如,與Ctrl+組合的字母Shift通常與僅與 組合的相同字母沒有區別Ctrl。Ctrl+ Shift+a和Ctrl+通常a都會產生^A
.在某些終端模擬器中,Ctrl+Shift組合甚至用於終端本身的快捷方式,並且在 shell 中不可用。