Ohmyzsh: Plugins: Kann ich sie asynchron oder bei Bedarf laden?

Erstellt am 6. Sept. 2017  ·  3Kommentare  ·  Quelle: ohmyzsh/ohmyzsh

oh-my-zsh-Plugins wie pyenv oder rbenv sind großartig, aber oft bin ich gezwungen, kein Plugin zu verwenden, weil es meine Shell-Startzeit zum Kriechen bringen kann. Aus diesem Grund erhalten wir Ausgaben wie #6017 .

Ist es möglich, einige Plugins asynchron zu laden, sodass mein Shell-Prompt nicht blockiert wird, bis alle Plugins gestartet sind? Kann ich andernfalls Plugins bei Bedarf laden?

init Feature

Hilfreichster Kommentar

Ich kann den Teil über das asynchrone Laden nicht beantworten, aber für das manuelle Laden könnten Sie Ihrer .zshrc eine Funktion hinzufügen, die dies tut.

Ein einfaches Beispiel (kann nur ein Plugin verarbeiten, keine Fehlerprüfung)

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

Führen Sie dann load-plugin pyenv aus, wann immer Sie es brauchen.

Alle 3 Kommentare

Ich kann den Teil über das asynchrone Laden nicht beantworten, aber für das manuelle Laden könnten Sie Ihrer .zshrc eine Funktion hinzufügen, die dies tut.

Ein einfaches Beispiel (kann nur ein Plugin verarbeiten, keine Fehlerprüfung)

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

Führen Sie dann load-plugin pyenv aus, wann immer Sie es brauchen.

Ich wollte nur darauf hinweisen, dass es derzeit ein sehr ähnliches Problem mit NVM (Node.js-Versionsmanager) gibt: https://github.com/creationix/nvm/issues/1277.

@crenwick hat sich eine großartige Möglichkeit ausgedacht, NVM bei Bedarf zu laden:

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'

Ich hoffe, das gleiche könnte mit pyenv gemacht werden:

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

@awinecki Danke für diese Info.

Ich frage mich, ob wir eine weitere Shell-Variable lazy_plugins haben können, die verwendet werden kann, um entweder automatisch Aliase wie oben zu definieren, oder vielleicht zsh autoload zu verwenden, damit die Kosten für das tatsächliche Laden des Plugins anfallen wenn der Benutzer versucht, das Plugin zu verwenden, und nicht beim Start der Shell.

Würde gerne hören, was die Scripting-Experten über diese Idee denken.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen