如果我将这些行放在我的行中,而没有其他任何内容,~/.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