我的 ZSH 补全在启动时不起作用,但当我获取 .zshrc 时它们会起作用(Mac)

use*_*503 4 macos zsh autocomplete zshrc oh-my-zsh

标题中有一个简单的总结,但需要进一步解释:

每当我打开终端(iterm2)时,我都会加载到 zsh 但完成似乎不起作用,然后当我手动运行时source .zshrc它会完全加载。我尝试移动 .zshrc 文件中的内容以查看加载顺序是否不正确,但它没有解决任何问题。

我的 .zshrc 文件:

# ZSH customization
export ZSH="/Users/user/.oh-my-zsh"
source $ZSH/oh-my-zsh.sh
plugins=(git docker asdf zsh-autosuggestions zsh-completions zsh-history-substring-search zsh-syntax-highlighting)
autoload -U compinit && compinit
# color
. "/Users/user/.bin/lscolors.sh" #big color file
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
# alias
alias ip="curl ifconfig.me"
alias ls="gls --color --group-directories-first -hp"
alias ydl="youtube-dl"
alias py="python"
alias code="codium"
# env
export PATH="/usr/local/opt/ncurses/bin:/usr/local/sbin:/usr/local/opt/openssl@1.1/bin:$PATH:/opt/metasploit-framework/bin:$HOME/.bin:$HOME/.cargo/bin"
export EDITOR=/usr/local/bin/codium
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/ncurses/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/ncurses/include"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/ncurses/lib/pkgconfig"
# fzf
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
# inits
test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
eval "$(starship init zsh)"
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,如果我需要提供更多信息,请告诉我。

Mar*_*ert 7

您的.zshrc文件中犯了两个错误:

\n
    \n
  • 如果是source $ZSH/oh-my-zsh.sh,那么您也不应该这样做autoload -U compinit && compinit,因为前者包含后者。\n
      \n
    • 运行compinit多次可能会导致问题并减慢 shell\xe2\x80\x99s 的启动速度。每次运行它时,它都会重新初始化完成系统。$fpath这将删除在上一个命令之后以编程方式添加的所有完成条目(而不是从您的 中自动获取)compinit这将删除在上一个运行
    • \n
    \n
  • \n
  • plugins=( ... )应在运行设置source $ZSH/oh-my-zsh.sh。\n
      \n
    • $plugins无论如何,对你的 shell 来说并不特殊。相反,它是 OMZ 读取的参数。
    • \n
    • 数组元素可以在单独的行上列出。无需将它们全部放在同一条线上。
    • \n
    \n
  • \n
\n

所以,改变你的顶部.zshrc为:

\n
ZSH="/Users/user/.oh-my-zsh"\nplugins=(\n    foo\n    bar\n    ...\n)\nsource $ZSH/oh-my-zsh.sh\n
Run Code Online (Sandbox Code Playgroud)\n