zsh:找不到命令:{compinstall,compinit,compdef}

Tom*_*ale 16 zsh autocomplete

zshcompsys man-page说:

初始化

如果系统安装完整,compinit从你的初始化文件中调用shell函数应该就足够了;请参阅下一节。然而,该功能 compinstall可由用户运行以配置完井系统的各个方面。

zsh 但是找不到命令:

genesis% compinit
zsh: command not found: compinit
genesis% compinstall
zsh: command not found: compinstall
genesis% echo $PATH
/home/ravi/bin:/home/ravi/.gem/ruby/2.4.0/bin:/home/ravi/bin:/home/ravi/.gem/ruby/2.4.0/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/local/heroku/bin:/home/ravi/.cabal/bin:/home/ravi/.local/share/fzf/bin:/usr/local/heroku/bin:/home/ravi/.cabal/bin
genesis%
Run Code Online (Sandbox Code Playgroud)

我会问这个问题,因为在开始时zsh我得到:

tmuxinator.zsh:20: command not found: compdef
Run Code Online (Sandbox Code Playgroud)

如何zsh找到这些完成命令?

小智 29

这与我在 mac 上遇到的问题相同。我正在使用 zsh shell。

Zsh Compdef 错误

Compdef 基本上是 zsh 用于加载自动完成的函数。需要激活完成系统。如果您使用的是oh-my-zsh 之类的东西,那么这已经解决了,否则您需要将以下内容添加到您的 ~/.zshrc

autoload -Uz compinit
compinit
Run Code Online (Sandbox Code Playgroud)

可以像这样直接使用 compdef 函数手动注册完成函数 compdef 。但是在使用 compdef 之前,需要在上下文中自动加载 compinit。

  • 我尝试了这个,但得到“compinit:503:没有这样的文件或目录:/usr/local/share/zsh/site-functions/_brew compinit:503:没有这样的文件或目录:/usr/local/share/zsh/site -functions/_brew_cask”猜测这是因为我不使用自制软件,所以这个答案对于像我这样的人来说可能是个问题。 (2认同)

Tom*_*ale 9

回答问题

通过运行访问这些命令:

$ autoload -Uz compinstall && compinstall
Run Code Online (Sandbox Code Playgroud)

它将加载一个引导向导,我一有选择就​​退出了Save and exit

然后重新加载外壳:

$ exec zsh
Run Code Online (Sandbox Code Playgroud)

更一般的答案

新用户配置似乎没有运行。

运行它:

$ autoload -Uz zsh-newuser-install && zsh-newuser-install -f
Run Code Online (Sandbox Code Playgroud)