为什么我无法在 config.fish 中为 Fish 设置补全?

Why can't I set up completion for Fish in config.fish?

我正在尝试为我的 project.

设置 Fish shell 完成

根据一些教程,我在 ~/.config/fish/config.fish 中添加了以下行:

complete -x -c j -a '(shonenjump --complete (commandline -t))'

其中 shonenjump 是我项目的可执行文件的名称,j 是一个 shell 包装二进制文件的函数。

我无法完成工作,但如果我在新创建的会话中重复此命令,它就会工作。

知道如何正确处理吗?

像这样设置完成不会将完成文件标记为已加载,因此之后,fish 仍会尝试自动加载完成文件。

并且有一个名为“j”的东西的完成文件,随 fish 一起提供,并且 it explicitly erases the completions that are already set up, which ordinarily isn't necessary, but going by the commit message 该工具设置了损坏的完成,所以这修复了它们。

因此,一旦您按下 Tab 键,fish 就会加载该文件,这会清除您的完成并安装其自定义的。

在 fish 中设置完成的方法是在 ~/.config/fish/completions/ 目录中创建名为“j.fish”的自己的完成文件。

或者,由于您的工具与显然也被称为“自动跳跃”的“j”不同,因此只需将其命名为其他名称即可。