Zsh:手动加载完成功能

Zsh:手动加载完成功能

如果我在 shell 启动时加载完成函数,但我像疯子一样生成 shell 来在同一个文件夹上工作。

当我有多个以包含.git文件夹的存储库为目标的完成函数时,如果我们位于存储库中,则加载这些函数。

问题是,当生成新 shell 时所有完成功能都会启动,它绘制 shell 提示的速度相当慢。

那么如何手动触发加载/source完成函数呢?即使我知道我已经在.git仓库中,我仍然想在使用它之前手动加载完成功能,缓慢的 shell 生成的成本高于完成本身。

答案1

不要在启动时加载完成函数,而是将它们声明为自动加载。这样每个函数都会在第一次使用时加载。

执行此操作的正常方法是将每个函数的代码放入$fpath.使用您想要为该函数指定的名称来调用该文件。在文件的第一行添加#compdef标签

所以如果你曾经有这个在你的.zshrc

autoload -Uz compinit
compinit -u
_foo () {
  code goes here
}
compdef _foo foo

然后,只需将其放入您的.zshrc

fpath=(~/.zsh/functions $fpath)
autoload -Uz compinit
compinit -u

并创建~/.zsh/functions/_foo包含

#compdef foo
code goes here

相关内容