问题描述
安装Angular CLI时,选择了启用补全功能completion。一打开终端就会出现/dev/fd/12:18: command not found: compdef。
原因与 zsh 的自动补全功能有关,compdef 是 zsh 用于定义补全行为的函数。
打开.zshrc,可以看到Angular CLI添加的新内容。
# Load Angular CLI autocompletion.
source <(ng completion script)
这一行试图加载 Angular CLI 的自动补全脚本。如果在执行这个命令时 zsh
的补全系统没有正确初始化,或者在没有安装 zsh-completions
的情况下尝试使用 compdef
,就可能导致这个错误。
解决方法
确保 zsh
的补全系统被正确初始化。即在尝试加载任何自定义补全脚本之前,先确保已经加载了 zsh
的补全功能。
1. 使用文本编辑器打开 ~/.zshrc
文件,例如使用nano
或vi
。
nano ~/.zshrc
2. 在 .zshrc
文件中,在 Angular CLI 自动补全脚本之前添加如下命令:
autoload -Uz compinit
compinit
这样可以初始化 zsh
的补全系统,避免出现找不到 compdef
的错误。
3. 保存并退出nano:
- 按下Ctrl + O(字母O,不是数字0)保存文件。
- 按下Enter确认文件名。
- 按下Ctrl + X退出nano。
4. 使更改生效。
source ~/.zshrc
5. 查看更改配置文件是否更改成功。
cat ~/.zshrc