Ohmyzsh: Plugins: posso carregá-los de forma assíncrona ou sob demanda?

Criado em 6 set. 2017  ·  3Comentários  ·  Fonte: ohmyzsh/ohmyzsh

Plugins oh-my-zsh como pyenv ou rbenv são ótimos, mas muitas vezes sou forçado a não usar um plugin porque ele pode reduzir o tempo de inicialização do shell. É por isso que temos problemas como #6017 .

É possível carregar alguns plugins de forma assíncrona, para que meu prompt de shell não seja bloqueado até que todos os plugins sejam iniciados? Se isso falhar, posso carregar plugins sob demanda?

init Feature

Comentários muito úteis

Não posso responder a parte sobre carregamento assíncrono, mas para carregamento manual, você pode adicionar uma função ao seu .zshrc que faça isso.

Um exemplo básico (só é capaz de lidar com um plugin, sem verificação de erros)

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

Então execute load-plugin pyenv , sempre que precisar.

Todos 3 comentários

Não posso responder a parte sobre carregamento assíncrono, mas para carregamento manual, você pode adicionar uma função ao seu .zshrc que faça isso.

Um exemplo básico (só é capaz de lidar com um plugin, sem verificação de erros)

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

Então execute load-plugin pyenv , sempre que precisar.

Só queria avisar que há um problema muito semelhante acontecendo com o NVM (gerenciador de versão do Node.js) agora: https://github.com/creationix/nvm/issues/1277.

@crenwick surgiu com uma ótima maneira de carregar o NVM sob demanda:

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'

Espero que o mesmo possa ser feito com pyenv:

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

@awinecki obrigado por essa informação.

Isso me faz pensar se podemos ter outra variável de shell lazy_plugins que pode ser usada para definir automaticamente aliases como o acima, ou talvez usar zsh autoload para que o custo de realmente carregar o plugin seja incorrido quando o usuário tenta usar o plug-in, em vez de no momento da inicialização do shell.

Adoraria ouvir o que os especialistas em scripts pensam sobre essa ideia.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jaredmoody picture jaredmoody  ·  3Comentários

faxotherapy picture faxotherapy  ·  3Comentários

2Dou picture 2Dou  ·  3Comentários

TadorHead picture TadorHead  ·  3Comentários

dogrizz picture dogrizz  ·  3Comentários