Ohmyzsh: 插件:我可以异步加载还是按需加载?

创建于 2017-09-06  ·  3评论  ·  资料来源: ohmyzsh/ohmyzsh

pyenvrbenv这样的 oh-my-zsh 插件很棒,但很多时候我被迫不使用插件,因为它会使我的 shell 启动时间变得很慢。 这就是为什么我们会遇到像 #6017 这样的问题。

是否可以异步加载一些插件,所以在所有插件启动之前不会阻止我的 shell 提示? 如果做不到这一点,我可以按需加载插件吗?

init Feature

最有用的评论

我无法回答有关异步加载的部分,但是对于手动加载,您可以在 .zshrc 中添加一个函数来执行此操作。

一个基本的例子(只能处理一个插件,没有错误检查)

function load-plugin() {
  source $ZSH/plugins/"$1"/"$1".plugin.zsh
}

然后在需要时运行load-plugin pyenv

所有3条评论

我无法回答有关异步加载的部分,但是对于手动加载,您可以在 .zshrc 中添加一个函数来执行此操作。

一个基本的例子(只能处理一个插件,没有错误检查)

function load-plugin() {
  source $ZSH/plugins/"$1"/"$1".plugin.zsh
}

然后在需要时运行load-plugin pyenv

只是想插一句,现在 NVM(Node.js 版本管理器)存在一个非常相似的问题: https://github.com/creationix/nvm/issues/1277。

@crenwick提出了一种按需加载 NVM 的好方法:

alias load_nvm='export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"'
alias node='unalias node npm && load_nvm && node'
alias npm='unalias node npm && load_nvm && npm'

我希望pyenv也能做到这一点:

alias load_pyenv='eval "$(pyenv init -)"'
alias pyenv='unalias pyenv && load_pyenv && pyenv'

@awinecki感谢您提供的信息。

这让我想知道我们是否可以有另一个 shell 变量lazy_plugins可以用来自动定义像上面这样的别名,或者使用 zsh autoload所以实际加载插件的成本会产生当用户尝试使用插件时,而不是在 shell 启动时。

很想听听脚本专家对这个想法的看法。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

samsondav picture samsondav  ·  3评论

khipukamayuq picture khipukamayuq  ·  3评论

Cabbagec picture Cabbagec  ·  3评论

jaredmoody picture jaredmoody  ·  3评论

thienedits picture thienedits  ·  3评论