如何在Zsh历史记录中滚动多行命令,而无需选择每个命令的每一行?

4
如果在Zsh(macOS或Ubuntu上)连续执行以下命令:
date +%s

echo \
a\
b\
c

按五次上箭头键可以滚动回到第一个命令。

有没有办法只用两个按键就能滚动回第一个命令(即第一次按键选择echo命令,第二次按键选择date命令)?

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

我希望找到一些 Zsh 快捷键,在不停止编辑多行命令的情况下上下滚动命令历史记录,但我还没有找到任何方法。

1个回答

5
将以下内容添加到您的 .zshrc 文件中:
bindkey '^P' up-history
bindkey '^N' down-history

现在你可以按下ControlP向上浏览历史记录,按下ControlN向下浏览历史记录,无论当前编辑缓冲区有多少行或者你在哪一行。
更多信息请参见https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#History-Control

或者,我的 zsh-autocomplete 插件 包含一个历史菜单,让您可以通过每个项目的一个按键向上和向下步进历史记录项,包括多行项目。

enter image description here


谢谢提到这个。乍一看好像很有前途,所以我会更仔细地研究一下(可能最终会使用它),但是我更喜欢找到一个不需要安装额外软件的解决方案,这样它就可以在运行基本 Zsh 的机器上工作,而我并不拥有这些机器。 - David
@David,我在我的问题末尾添加了一种替代方案。请看一下。 - Marlon Richert
@David 实际上,我为你找到了一个更好的解决方案。我再次更新了我的答案。 :) - Marlon Richert
谢谢@Marlon,bindkey对我来说是一个完美的解决方案; 谢谢!它非常有效 :) - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接