Zsh 的标准补全工作正常,那么为什么人们建议加载 compinit 模块呢?

Zsh 的标准补全工作正常,那么为什么人们建议加载 compinit 模块呢?

如果我将这些行放在我的行中,而没有其他任何内容,~/.zshrc我将获得我期望的所有完成功能。

# For autocompletion with an arrow-key driven interface
zstyle ':completion:*' menu select
# report what kind of completion zsh doing
zstyle ':completion:*' format 'Completing %d'
# show ls style colours on file completions
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
# report position when autocompleting lists bigger than available screen
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s%p

那么为什么人们建议你加载compinit?,即

autoload -Uz compinit
compinit

# completion  config directives  go here

我的测试表明它并没有改善 zsh 的完成,也没有修复已损坏但在 bash 中可以工作的 zsh 完成(即curl)。

答案1

完成系统激活compinit 完善基础。基本系统在很大程度上不知道上下文,并且几乎在所有地方都只完成文件名。由 激活的“新”补全系统compinit知道,当参数以 开头时-,它应该补全许多命令的选项,它应该补全命令$PATH(甚至在 root 的 PATH 中)而不是之后的文件名sudo,它应该补全主机名之后ssh, ETC。

我不知道你为什么说curl的完成是“坏的”。也许是因为没有安装?旧版本的 zsh 具有curl 的补全功能,但较新的版本依赖于curl 发行版中包含的补全脚本。检查您的curl 安装是否包含或_curl下的某个位置(某些发行版缺少此文件)。/usr/local/share/zsh/functions/usr/share/zsh/functions

相关内容