在尝试从oh迁移到更轻的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发布于 2021-12-21 10:27:22
在看到使用echo $fpath设置的值之后,我意识到自制的警告建议有错误的代码,并且它不包括compinit函数所在的文件夹。
修复可以很容易地完成,可以替换:
fpath=${HOMEBREW_PREFIX}/share/zsh-completions:$fpath使用
export fpath=(${HOMEBREW_PREFIX}/share/zsh-completions $fpath)解决了这个问题。
发布于 2022-04-14 03:28:50
也许是Lmod造成了这个问题。参见本文:Lmod常见问题
如果我的启动外壳是bash或tcsh,并且我启动了zsh,为什么我会收到这样的消息:“/etc/ zsh /zshrc:48: compinit: function” Lmod支持zsh和ksh。这两个shell都使用shell var。但以非常不同的方式。问题是有些bash或tcsh用户运行ksh脚本并需要访问模块命令。在K-shell中,env。var。FPATH是导出的,是找到模块shell函数的路径。Z-shell还使用FPATH来指向compinit等工具。通过导出FPATH,Z-shell不改变FPATH的值,这意味着zsh用户无法找到使其工作的所有函数。解决方案是在启动文件中“exec zsh”之前添加“unset FPATH”。
在我的例子中,我必须卸载Lmod,以确保直接ssh和VSCode终端都正确地运行zsh完成。
发布于 2022-09-10 09:16:14
对我来说,这是一种特权,在修复它们之后,它会运行得很好。
sudo chmod a+x /usr/local/lib/zsh
sudo chmod a+r /usr/local/lib/zsh
sudo chmod a+r /usr/local/lib/zsh/5.9
sudo chmod a+r /usr/local/lib/zsh/5.9/zsh
sudo chmod a+x /usr/local/lib/zsh/5.9
sudo chmod a+x /usr/local/share/zsh
sudo chmod a+r /usr/local/share/zsh
sudo chmod a+xr /usr/local/share/zsh/5.9https://stackoverflow.com/questions/70433815
复制相似问题