zsh 与 vi-mode:如何保留命令行以供将来使用而不执行

zsh 与 vi-mode:如何保留命令行以供将来使用而不执行

我经常遇到这样的情况:在输入复杂命令时,我意识到我需要先输入一些其他命令。

作为vi用户,我很乐意0 D输入不同的命令,然后p使用已删除的命令行。不幸的是,没有人(包括我自己)愿意vizsh.

所以现在我在命令的开头I插入一些命令以使其失败,执行其他操作,从历史记录中删除旧命令并删除.每次我都会问自己:xx有没有更简单的方法来做同样的事情?

不是重复的!请注意,我提到我正在使用 vi 模式。其他问题的答案均​​不适用于 vi 模式。它们仅适用于 emacs 模式,即使它们没有提及,因此它们具有误导性。请重新打开以便人们可以找到正确的答案。

答案1

启用interactivecommentsshell 选项

setopt interactivecomments

#并在命令行上使用正常/命令模式下的操作(即Esc按后跟#)。这会#在该行前面插入 ,立即提交该行(由于它是注释,因此将被忽略),并将其添加到命令行历史记录中。这在逐行的基础上工作,即不幸的是,它不能很好地处理多行命令。

#在已经注释掉的行上使用该操作(例如从命令行历史记录中获取)会#从该行的开头删除 并提交它。

shellinteractivecomments选项默认在交互式 shell 中未设置,但在非交互式 shell 中设置。

相关内容