如何在不选择每个命令的每一行的情况下滚动浏览 Zsh 历史记录中的多行命令?

Dav*_*vid 4 zsh

如果在 Zsh 中连续运行以下命令(在 macOS 或 Ubuntu 上):

date +%s
Run Code Online (Sandbox Code Playgroud)
echo \
a\
b\
c
Run Code Online (Sandbox Code Playgroud)

然后,可以通过按向上箭头 5 次滚动回到第一个命令。

有没有一种方法只需按两次按键即可滚动回到第一个命令(即第一次按键选择该echo命令,第二次按键选择该date命令)?

当历史记录包含多个长的多行命令时,使用向上箭头键向后滚动是很痛苦的。

我希望找到一些 Zsh 快捷键,可以在命令历史记录中上下滚动,而无需在途中停止编辑多行命令,但我还没有找到任何快捷键。

Mar*_*ert 5

将以下内容添加到您的.zshrc文件中:

bindkey '^P' up-history
bindkey '^N' down-history
Run Code Online (Sandbox Code Playgroud)

现在,无论当前编辑缓冲区有多少行或您位于哪一行,您都可以按ControlP在历史记录中向上移动和在历史记录中向下移动。ControlN

有关更多信息,请参阅https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#History-Control


或者,我的zsh-autocomplete插件包含一个历史菜单,可让您向上和向下浏览历史项目,每个项目只需按一次按键,包括多行项目。

在此输入图像描述