在尝试从oh-my-zsh移回更轻的zsh配置后,我安装了zsh-completions
插件,通过自制软件安装时需要具有以下内容:
if type brew &>/dev/null; then
fpath=${HOMEBREW_PREFIX}/share/zsh-completions:$fpath
autoload -Uz compinit
compinit
fi
问题是它不能正常工作,因为它找不到compinit
,我得到了下一个错误:
zsh: compinit: function definition file not found
4条答案
按热度按时间zzwlnbp81#
在看到使用
echo $fpath
设置的值后,我意识到自制软件警告建议有错误的代码,它不包括compinit函数所在的文件夹。修复很容易,只需替换:
与
解决了这个问题。
uujelgoq2#
也许是Lmod导致了这个问题。请参阅这篇文章:Lmod FAQ
**如果我的启动shell是bash或tcsh,我启动zsh,为什么我会收到这样的消息:“/etc/zsh/zshrc:48:compinit:function definition file not found”**Lmod同时支持zsh和ksh。这两种shell都使用shell var. FPATH,但使用方式非常不同。问题是一些bash或tcsh用户运行ksh脚本,需要访问module命令。在K-shell中,导出env. var. FPATH,它是找到模块 shell 函数的路径。Z-shell也使用FPATH来指向compinit等工具。通过导出FPATH,Z-shell不会更改FPATH的值,这意味着zsh用户无法找到使其工作的所有函数。解决方案是在启动文件中的“exec zsh”之前添加“unset FPATH”。
在我的例子中,我必须卸载Lmod以确保直接ssh和VSCode终端都正确运行zsh完成。
wwtsj6pe3#
在我的例子中,更新macOS后:
zsh
的问题:错误
.zshrc
:因为名为
5.8.1
的目录不存在,并且未加载完成。解决方案
compinit
添加自动加载正确
.zshrs
:9rnv2umw4#
对我来说,这是特权,修复它们后,它工作得很好。