Ton*_*sen 2 zsh autocomplete fish
我有一个工具可以为 bash、zsh 和 Fish 创建完成文件。我通常使用 zsh,但我无法让这个完成文件在 zsh 上工作。因此,作为测试,我安装了fish并为fish创建了完成文件。还有那个我无法上班。所有其他补全在 zsh 和 Fish 中都工作正常,因此我怀疑该工具创建了损坏的补全文件。有没有办法检查完成文件的语法是否有错误?
我的答案涉及 zsh (使用 \xe2\x80\x9cnew\xe2\x80\x9d 完成系统,即调用后compinit
)和 bash。对于鱼,请参阅NotTheDr01ds的回答。
如果完成文件中存在语法错误,则在加载完成代码时您将看到一条错误消息。在 bash 中,这种情况发生在/etc/bash_completion
加载时。在 zsh 中,这是第一次调用完成函数时发生的。但语法错误很少见。大多数错误都不是语法错误,除了调用补全函数之外,没有其他方法可以检查它是否有效。
如果在生成补全时发生实际错误,您将在终端上看到一条错误消息。但是,如果代码没有触发错误,但没有生成所需的完成,则不会显示错误。
\n首先要检查的是您想要的完成函数是否实际被调用。对于 zsh,请检查
\necho $_comps[foo]\n
Run Code Online (Sandbox Code Playgroud)\n其中foo
是要完成其选项/参数的命令。对于 bash,请检查
complete -p foo\n
Run Code Online (Sandbox Code Playgroud)\n如果您的自定义完成功能未加载,请参阅自定义命令的动态 zsh 自动完成或自定义 bash 选项卡完成。
\n如果要调试完成代码,请在 zsh 中按^X?
( Ctrl+X ?) 而不是Tab运行_complete_debug
。这会将完成代码的跟踪记录到一个文件中,您可以通过按 查看该文件Up Enter。