作为 bindkey 函数的一部分在 zsh 中手动调用 compinit

Call compinit manually in zsh as part of a bindkey function

因此,我已经设置我的 .zshrc 进行基本级别的语法检查,方法是为基本上所有字符生成键创建 bindkey 行并将它们指向生成字符和然后调用语法检查器。

它在其他方面工作得很好,但是我想将它应用到选项卡,以便它会考虑 $BUFFERcompinit 的变化,但是在 trap_tab 我创建的函数甚至没有调用 compinit.

非常感谢任何帮助!

下面是相关位。只需取消注释并重新注释 bindkeyzle -N 行。取消注释时,即使调用了 compinit,我在点击选项卡时也没有收到任何自动填充选项。

# Setup basic config stuff for history size, Vim keybindings, and the like
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt  extendedglob notify
unsetopt nomatch

# Auto-completion (double-tab tab)
zstyle :compinstall filename '/home/terminus/.zshrc'
autoload -Uz compinit
compinit
zstyle ':completion:*' menu select

function trap_tab
{
    compinit
}

#bindkey '  ' trap_tab
#zle -N trap_tab

export EDITOR='vim

事实证明没有“合适的”解决方案,但是 GitHub 上至少有一个人想出了一个自称“hacky”的解决方案,它看起来确实能满足我的要求,尽管有一些额外的格式需要:github.com/Valodim/zsh-capture-completion