我经常遇到这样的情况:在输入复杂命令时,我意识到我需要先输入一些其他命令。
作为vi
用户,我很乐意0 D输入不同的命令,然后p使用已删除的命令行。不幸的是,没有人(包括我自己)愿意vi
以zsh
.
所以现在我在命令的开头I插入一些命令以使其失败,执行其他操作,从历史记录中删除旧命令并删除.每次我都会问自己:x
x
有没有更简单的方法来做同样的事情?
不是重复的!请注意,我提到我正在使用 vi 模式。其他问题的答案均不适用于 vi 模式。它们仅适用于 emacs 模式,即使它们没有提及,因此它们具有误导性。请重新打开以便人们可以找到正确的答案。
答案1
启用interactivecomments
shell 选项
setopt interactivecomments
#
并在命令行上使用正常/命令模式下的操作(即Esc按后跟#)。这会#
在该行前面插入 ,立即提交该行(由于它是注释,因此将被忽略),并将其添加到命令行历史记录中。这在逐行的基础上工作,即不幸的是,它不能很好地处理多行命令。
#
在已经注释掉的行上使用该操作(例如从命令行历史记录中获取)会#
从该行的开头删除 并提交它。
shellinteractivecomments
选项默认在交互式 shell 中未设置,但在非交互式 shell 中设置。