我是zsh的新手,刚从fish切换过来。我正在尝试让自动完成工作,这样它就可以在按下选项卡时显示命令的参数/标志选项。
目前,这是可行的,但它似乎只适用于内置命令。例如,它适用于ls、grep、git等,但不适用于我自己添加的程序。例如,fd查找、exa和nvm都不起作用。
对于nvm,我已经使用Oh My Zsh启用了nvm插件。我知道这个插件总体上是有效的,因为nvm本身是有效的(在启用插件之前是无效的(。
对于fd find,我在/usr/share/zsh/vendor-completions/_fd
中看到了自动完成文件
例如,我按照网站的指示手动下载并将自动完成文件放置在/usr/local/share/zsh/site-functions/_exa
中。
这三个程序都没有像内置命令那样向我显示典型的参数/标志自动完成菜单。我不确定哪里出了问题。
我回显fpath环境变量以确保/usr/local/share/zsh/site-functions
在其中。它与/usr/local/share/zsh/site-functions/
一起
当我运行which nvm
时,我得到:
_nvm () {
# undefined
builtin autoload -XUz
}
这实际上就是我从_nvm、_exa、_fd中得到的。
不知道还能尝试什么。
关于如何使自动完成正常工作,有什么建议吗?
其他信息:我在System76 Darter Pro笔记本电脑上运行Pop_OS。
我找到了一个对我有效的修复程序。在github上搜索了与自动完成相关的zsh问题后,这个解决方案对我有效。stackexchange上的解决方案的原始来源值得称赞。
解决方案只是删除所有zcompdump文件:
rm ~/.zcompdump*
运行以上命令后,自动完成工作并展开非内置程序的可能标志/参数!