Fish Shell 路径完成中的语法错误

Syntax error in Fish Shell path completion

我错误地在目录名中放置了一个符号 (&)。我重命名了目录,但现在每次更改目录时都会打印一条错误消息:

complete: Completion '[A list of directories' path]' contained a syntax error. Expected an argument, but found a '&'

我不知道这些路径完成存储在哪里。我查看了 $fish_complete_path 列表中列出的文件夹,但运气不佳...

这个问题应该很容易解决,只是我不知道去哪里看...

您看到的行为是因为 eval 某处正在评估未正确转义的字符串。在这种情况下,它将是 __fish_complete_cd 函数。其中,在 fish 2.2.0 中,确实以不安全的方式使用了 eval。从 fish 2.3.0 开始,它不再这样做,这意味着您可以安全地在目录名称中使用符号。

通常我会建议在 https://github.com/fish-shell/fish-shell/issues 打开一个错误报告,尽可能详细地包括你 运行 (echo $FISH_VERSION) 的鱼的版本和重现错误的步骤问题。然而,在这种情况下,我们已经修复了这个错误,所以您需要做的就是升级您的 fish 安装。在你可以这样做之前,你应该能够 "fix" 通过简单地开始一个新的 shell 来解决眼前的问题:exec fish.

我也安装了渔夫。我卸载了 OMF,删除了渔夫文件和插件(我有 z 并安装了)。现在可以了。不确定到底是哪一个是罪魁祸首。