zsh inizia incredibilmente lentamente

ZSH dura circa un secondo e mezzo dalla creazione di una nuova window del terminal per essere pronti. Sono abbastanza sicuro che il colpevole sia compinit .

Non sono stato in grado di trovare una buona documentazione su compinit, ma sembra che dovrebbe memorizzare tutte le cose necessarie in alcuni file come .zcompdump .

Qualche trucco per accelerarla?

oh-my-zsh stava prendendo circa 1,5 secondi per iniziare sul mio computer porttile. Ho scritto alcuni dei passi che ho preso per farlo giù fino a circa 0,25 secondi .

Un'altra anima gentile ha riassunto i passi necessari per integrare i miei cambiamenti nella tua copia di oh-my-zsh.

Il problema più grande è che il compinit è stato chiamato un integer gruppo di tempi supplementari anziché una sola volta dopo che il path era completamente definito. Ho fatto questi cambiamenti sul mio branch di oh-my-zsh su github. Le modifiche sono state discusse su github e sembrano funzionare bene per poche persone. Speriamo che i cambiamenti saranno fusi in oh-my-zsh nel prossimo futuro.

Sebbene ZSH abbia una quota equa di rallentamenti, se la window del terminal si trova vuota per alcuni momentjs prima di vedere la row Last Login: dovrai cancellare i file di registro per vedere miglioramenti di velocità. Questo è ancora un problema di OSX Lion e dovrà essere fatto each due mesi. Lame, lo so.

Il command è:

 sudo rm -rf /private/var/log/asl/*.asl 

Naturalmente, devi leggere in anticipo questo articolo e sapere esattamente cosa sta succedendo, perché bisogna pensare a tutto quello che dice sudo rm . Ho solo messo questo qui perché il tuo utilizzo di ZSH dimostra la tua competenza con la row di command per iniziare.

Il mio miglior miglioramento è derivato dalla rimozione degli elementi dalla sezione plugin = (). I plugin "github" e "brew" sono molto lenti per caricare.

Ho anche rimosso il mozzo che ho avuto alias per git e che ha spinged up il prompt pure.

Ho usato '/ usr / bin / time zsh -i -c exit' per registrare i tempi di avvio, tuttavia il compinit non sembra fare una differenza abbastanza grande per me.

Sarebbe bello sentire quello che altri stanno facendo per accelerarlo.

Stai utilizzando il preinstallato /bin/zsh o un altro? Chiedo, perché i zsh che ho installato attraverso il fink inizia terribilmente lento a causa della sua inclusione di templates zsh , mentre la vaniglia inizia in su.

Funziona con un file dump di esplicito ( compinit -d dumpfile )? La pagina uomo afferma che

La prossima invocazione di compinit leggerà il file di dumping invece di eseguire un'initialization completa.

Ora oh-my-zsh controlla l'opzione di configuration git-oh-my-zsh.hide prima di interrogare lo stato. Così correre

git config oh-my-zsh.hide-status 1

sul repository problematico.

Zsh da solo inizia in circa 0,1 secondi per me, che è abbastanza buono abbastanza. Ho appena notato come mi sono avvicinato al 50.000 segnali di storia del command che è diventato più simile a 3 secondi per caricare il primo prompt.

Non so come voi stanno trovando tutte queste altre ragioni per il lento avvio, ma la mia era esattamente la mia prima idea. Ho fatto un mv ~/.zsh_history zsh_history_backup e bam, l'avvio di 3 secondi è ora l'avvio di 0,1 secondi. Curiosamente, l' /usr/bin/time /bin/zsh -i -c exit non riesce a catturare il tempo necessario per caricare nella cronologia.

Se non hai decine di migliaia di comandi nella tua storia zsh, però, allora non è così. Il mio ~/.zsh_history misurato 1,8MB. È molto ansible incollare accidentalmente un grosso pezzo di roba come un command in un terminal, anche questo farà sobbalzare la storia proprio in fretta (anche se questo è qualcosa di molto da evitare, come può ovviamente essere estremamente distruttivo).

Stavo usando il tema "af-magic"

Passare a "muse" risolve il problema.

Modifica ~ / .zshrc e modifica questa row:

 #ZSH_THEME="random" #ZSH_THEME="af-magic" ZSH_THEME="muse" 

Ho ottimi miglioramenti di velocità dopo aver cancellato la directory ~ / .oh-my-zsh / plugins /. C'erano molti plugin inutilizzati.