答案1
三个选项:
zsh默认有键盘快捷键Alt+ ,用于推送当前行。Q
使用方式如下:
类型命令。
按Alt+ Q。
执行其他命令。
命令将会再次出现。
从技术上讲,这不会将其放入历史记录中。此外,如果您需要在之前执行另一个命令命令,您必须再次按Alt+ Q。
另外默认情况下,键盘快捷键Ctrl+U和Ctrl+Y剪切和粘贴(粘贴)当前行。
像这样使用它们:
类型命令。
按Ctrl+ U。
执行其他命令。
按Ctrl+ Y。
命令将会再次出现。
这也可以在 bash 中工作,它使用自己的剪贴板,即剪贴板的内容由Ctrl+ ( Shift+ ) C/V和选择/鼠标中键将保持不变。
最后但同样重要的是,您可以通过执行以下命令永久启用命令行上的注释
echo setopt interactivecomments >> ~/.zshrc
Alt+#在这里不起作用,但Ctrl+ A/ Home, #,Enter可以达到相同的效果。
要查看所有可用的键盘快捷键,请执行
bindkey
答案2
选项四(作为问题标题的答案,而不是其解释;--):
print -S "this line goes to the history"
摘录自zshbuiltins(1)
:“print -S
将结果放在历史列表中,而不是标准输出中。在这种情况下,只允许一个参数;它将被拆分成单词,就像它是一个完整的 shell 命令行一样。效果类似于在 HIST_LEX_WORDS 选项处于活动状态的情况下从历史文件中读取行。”
答案3
@mpy 答案的小部件,将其添加到您的 .zshrc 中
to-history() { print -S $BUFFER ; BUFFER= }
zle -N to-history
bindkey 'œ' to-history
注意:œ 是我在 Mac 上按 alt/option-q 得到的,请根据你的终端进行调整
答案4
如果你正在使用 vi 模式,则按ESC
进入正常模式,然后按Shift+3
( #
)。这会将注释掉的命令放入历史记录中。