将命令放入历史记录中而不执行它

Dan*_*lme 10 zsh

,如果我在该行上有一个命令,并且我按Alt- #(光标在该行的任何位置),它会在该行#的前面添加一个,将其注释掉,“执行”它(它什么都不做,因为它是现在注释掉),并将其放入历史记录中。当我输入部分或全部命令并意识到我需要先运行另一个命令然后再回到那个命令时,它真的很有用。

如何在执行相同的操作?注释掉并不重要:我所关心的是该命令现在不会发生,但可以稍后从历史中检索。

mpy*_*mpy 8

选项四(作为对问题标题的回答,而不是其解释;-):

  • print -S "this line goes to the history"

摘自zshbuiltins(1):"print -S将结果放在历史列表中,而不是放在标准输出上。在这种情况下,只允许一个参数;它会被拆分成单词,就好像它是一个完整的 shell 命令行一样。效果类似于阅读HIST_LEX_WORDS 选项处于活动状态的历史文件中的行。”


Den*_*nis 7

三个选项:

  • zsh默认使用键盘快捷键Alt+Q来推送当前行。

    像这样使用它:

    1. 键入命令

    2. Alt+ Q

    3. 执行其他命令

    4. 命令将再次出现。

    从技术上讲,这并没有载入史册。另外,如果你需要之前执行其他命令的命令,你必须按Alt+Q一次。

  • 此外,默认情况下,键盘快捷键Ctrl+UCtrl+Y剪切和猛拉(粘贴)当前行。

    像这样使用它们:

    1. 键入命令

    2. Ctrl+ U

    3. 执行其他命令

    4. Ctrl+ Y

    5. 命令将再次出现。

    这将在bash工作,以及和它使用自己的剪贴板,即它们所管理的剪贴板内容Ctrl+(Shift+)C/V选择/中键单击将保持不变。

  • 最后但并非最不重要的是,您可以通过执行在命令行上永久启用注释

    echo setopt interactivecomments >> ~/.zshrc
    
    Run Code Online (Sandbox Code Playgroud)

    Alt+#在这里不起作用,但是Ctrl+ A/ Home, #,Enter达到了相同的结果。

要查看所有可用的键盘快捷键,请执行

bindkey
Run Code Online (Sandbox Code Playgroud)


Mik*_*ike 5

@mpy 答案的小部件,将其添加到您的 .zshrc

\n\n
to-history() { print -S $BUFFER ; BUFFER= }\nzle -N to-history\nbindkey '\xc5\x93' to-history\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:\xc5\x93 是我在 Mac 上通过 alt/option-q 得到的内容,请根据您的终端进行调整

\n