使zsh自动更正与自定义git别名一起工作

15

我有一个自定义的git别名,我使用git df(它基本上是git diff的快捷方式)。

然而,当我在包含db目录的目录中使用git df时,由于git的zsh自动更正,每次都会出现以下情况:

% ls
app/ config/ db/ lib/ log/ spec/

% git alias | grep "df"
df = diff

% git df
zsh: correct 'df' to 'db' [nyae]?
有没有办法让zsh知道我的git别名,以便在尝试自动更正命令时将它们纳入考虑范围?我希望它能够检测到git df的存在,并且不推荐我使用git db
我不想创建一个zsh别名(例如alias gdf="git diff")或使用alias git="nocorrect git"
感谢您的帮助!

1
我认为完全禁用自动更正会更容易:我从未见过它纠正除文件名以外的任何东西。而像srun command/cave resolve package这样的命令,配有.command/.package配置目录,真的很恶心。有太多这样的命令需要为每个命令添加别名。 - ZyX
1
起初我认为完全禁用它是一个疯狂的想法,但后来我意识到自动更正并不同于自动完成。我喜欢自动完成,但最近自动更正一直在干扰我的工作。我使用 unsetopt correct_all 命令将其禁用,我们会看看效果如何。感谢您的建议! - remi
3个回答

3
你可以通过运行命令hash -rfrehash来强制zsh重新构建自动更正缓存。当zsh自动更正到错误的内容时,这个命令可以解决问题。

1
这是不同的:它命令哈希包含“命令名称” - “二进制路径”关系以及“命名目录” - “实际路径”。在这种情况下,您的命令不会修复自动更正,只能修复命令的自动更正。 - ZyX

3

Git有一个自动校正功能:

git config --global help.autocorrect 

会在自动更正之前等待2秒:

git config --global help.autocorrect 2 

我认为如果你想在zsh中实现这个功能,你需要直接更改git完成函数。


0
有时候,我发现自动纠正有点烦人。因此,我在我的 ~/.zshrc 文件中进行了如下操作:
DISABLE_CORRECTION="true"

这将禁用自动校正功能。否则,您可以执行
alias git="nocorrect git" 

但是你似乎对此感到反感。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接