如何禁用历史扩展的确认,如`!!`

kry*_*tah 7 zsh command-history

Zsh 对我非常照顾,有时可能会有点过分。我宁愿让它远离我的业务的时候之一是当它“想要确保我想要执行给定的命令”时。我遇到的功能是:

命令:
sudo !! - 运行以 sudo 为前缀的上一个命令

^old^new- 运行上一个命令,但将第一次出现的“旧”替换为“新”


问题:
当我输入上面列出的两个命令之一并点击时Enter,而不是运行命令立即,命令扩展到实际要运行的内容,我必须Enter再次点击才能实际执行它。第一个世界问题,但仍然如此。

1 $ pwd
2 /home/neil
3 $ sudo !!
4 $ sudo pwd
5 /home/neil
Run Code Online (Sandbox Code Playgroud)

我想跳过第 4 步。这在 bash 中默认被跳过。

mpy*_*mpy 11

这很简单……如果您知道相应的选项:

unsetopt HIST_VERIFY
Run Code Online (Sandbox Code Playgroud)

如果您希望这种行为是永久性的,请将其放入您的~/.zshrc并执行source ~/.zshrc

解释来自man zshoptions

HIST_VERIFY 每当用户输入带有历史扩展的一行时,不要直接执行该行;相反,执行历史扩展并将该行重新加载到编辑缓冲区中。

  • 刚刚尝试了一下,结果我必须确保在运行命令之前获取了 `oh-my-zsh`。解决了! (2认同)