zsh 中 bash 的 `history -p` 的替代品?

zsh 中 bash 的 `history -p` 的替代品?

在bash中,history -p历史对其论证进行了扩展; zsh 中的替代方案是什么?

答案1

我不知道任何,但请参阅histverify更改历史扩展行为的选项,以便当您在包含历史运算符的行上按 Enter 时,扩展将在编辑器缓冲区中执行,而无需运行命令。

$ setopt histverify
$ 回声!! Enter
$ echo setopt histverifyEnter
setopt 历史验证

另请注意,zsh就像 in csh(历史扩展来自 70 年代末)历史修饰符(如:h, :r, :A...)也可以应用于参数扩展($var:h...)。

并且可以通过特殊的关联数组访问整个历史记录$history

该关联数组的键是历史编号,与未定义顺序的常规关联数组相反,$history[@]它按键的数值降序排序。

${history:0:1}最后的历史条目也是如此。因此,您可以使用参数扩展运算符来获得与历史扩展运算符相同的结果。例如:!$:h,可以是${${(z)history:0:1}[-1]:h}

答案2

在 bash 中,您可以通过执行以下操作来扩展命令:

history -p !23 

因此,如果在 23 中你有 ls -l the,则返回将是:

ls 
-l 

在 zsh 中,我可以通过执行以下操作来重现类似(但不相同)的行为:

history 23 23 | xargs -n1 | tail -n+2

相关内容