如何在 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-history小部件(down-historydown-line-or-history用于向下滚动)提供。

默认情况下up-line-or-history应绑定到,Up但您可以使用 将其绑定到(几乎)任何其他按键序列bindkey。在终端中,特殊键(不生成可打印字符的键)会生成一个按键序列,然后由 shell 解释该序列 - 或者不解释,如您的 + 示例2A所示ShiftUp这些按键序列在终端仿真器之间也可能不同。为了获取适合您终端的正确按键序列,请打开它,然后按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 中不可用。

相关内容