小编lig*_*ist的帖子

如何让 Zsh 不存储失败的命令

问题

我正在使用 oh-my-zsh 和 Antigen 来管理我的 Zsh。

有时我会不小心在 Zsh 中输入错误/失败的命令,当zsh-autosuggestions 插件抛出这些命令时,这很烦人。

例如,假设我输入 gut status而不是git status.

现在,当我尝试再次输入正确的命令时,一旦我输入g,自动建议插件就会抛出,gut status因为这是最近历史上最接近的匹配。但这是一个失败的命令!

想要做的是防止这些失败的命令“污染”我的历史记录,这样自动建议插件就不会建议它们。

我做了什么

我已经搜索过这个,与从历史记录中排除条目最接近的匹配是设置 HIST_IGNORE_SPACE,或者忽略特定命令的方法,或者在输入命令后手动删除命令。看到这个这个。但正如@Adaephon 52 所指出的,这发生行为完成之后。

我正在考虑做什么

我现在想到的是编写一个函数,每次将失败的命令输入 Zsh 时都会触发该函数以从历史记录中删除最新条目。但是,我对 Zsh 不够熟悉,不知道这种触发器是否存在或如何去做。


关于已接受解决方案的说明

对于那些对此问题感兴趣的人,已接受的解决方案的工作原理是失败的命令不会存储在历史文件中。fc -lhistory确认这一点。

但是,似乎 zsh-autosuggestions 插件正在执行自己的本地缓存(或使用其他机制生成建议),因此它仍然会建议失败的命令,但前提是会话未结束。当用户启动 shell 的一个新实例时,大概是插件必须加载缓存的历史记录时,它不再建议失败的命令(当然,除非您再次输入它们)。

建议的解决方案在技术上是正确的,因为我(错误地)以这样一种方式构建了我的问题,它只需要一个阻止 Zsh 存储失败命令的答案,而接受的解决方案就是这样做的(尽管方式有限;请参阅解决方案中的链接)细节)。

任何熟悉 shell 脚本(我不是)并且有足够动力的人都可以查看zsh-autosuggestions 脚本

linux zsh shell command-line oh-my-zsh

15
推荐指数
1
解决办法
3941
查看次数

标签 统计

command-line ×1

linux ×1

oh-my-zsh ×1

shell ×1

zsh ×1