我喜欢 zsh 的命令自动更正功能。然而,它有一个烦人的功能:有时我尝试运行一个命令,发现它不存在,安装它,然后尝试再次运行它,而 zsh 仍然想要进行相同的更正。 Zsh 这样做是因为保留命令路径的哈希值,并且在进行自动更正时不会超出哈希值。如果我n
在安装命令后进行更正,该命令确实会运行,但n
每次我想运行该命令时我都必须再次说一遍,或者通过调用hash
内置命令来更新每个正在运行的实例中的命令哈希。
我确实希望 zsh 保留命令路径的哈希值,并且我想保留自动更正(即,我像往常一样键入命令名称并按Enter,如果该命令不存在,zsh 会建议进行更正)。但是,我希望“命令不存在”是指该命令$path
此时未打开,而不是该命令不存在。
重现步骤:
$ mkdir /tmp/test
$ cp /bin/true /tmp/test/wibble
$ PATH=/tmp/test:/bin zsh -f -o correct
darkstar% wobble
zsh: correct 'wobble' to 'wibble' [nyae]? a
darkstar% cp /tmp/test/{wibble,wobble}
darkstar% wobble
zsh: correct 'wobble' to 'wibble' [nyae]? n
期望的行为:当wobble
存在时,不提示更正它。我怎样才能做到这一点?
答案1
正如所提到的@用户1934428,您可以通过运行显式重新创建哈希表rehash
。为了避免手动执行此操作,请将其放入您的zshrc
:
zstyle ":completion:*:commands" rehash 1
zstyle
您可以从手册页中找到更多信息zshmodule
,并且样式本身记录在zshcompsys
.