zshの起動が非常に遅い


63

ZSHは、新しいターミナルウィンドウを作成してから準備が整うまで、約2秒半かかります。犯人は間違いないと確信していcompinitます。

良いドキュメントを見つけることができませんでしたが、のcompinit,ようなファイルに必要なものをすべてキャッシュする必要があるよう.zcompdumpです。

高速化するコツはありますか?

回答:


33

oh-my-zsh私のラップトップで起動するのに約1.5秒かかっていました。 それを約0.25秒にするために取ったいくつかのステップを書きました

別の親切な魂が、私の変更を oh-my-zshのコピーに統合するために必要な手順を要約しました

最大の問題はcompinit、fpathが完全に定義されてから1回だけではなく、余分な時間と呼ばれることでした。oh-my-zshgithubのブランチでこれらの変更を行いました。変更はgithubで議論されており、数人にとってはうまく機能しているようです。oh-my-zsh近い将来、変更がマージされることを願っています。


4
将来の読者のために、これらの変更はすべて上流にマージされたと思います。
マイケルミオール

1
変更はアップストリームに移動された可能性がありますが、プラグインからGitを削除することでかなり助けになりました。
kylehotchkiss

25

ZSHにはかなりの速度低下Last Login:がありますが、行が表示される前に端末ウィンドウがしばらく空白になっている場合は、速度の改善を確認するためにログファイルをクリアする必要があります。これはOSX Lionの時点でまだ問題であり、数か月ごとに行う必要があります。ラメ、私は知っています。

コマンドは次のとおりです。

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

もちろん、前もってこの記事を読む必要がありますので何が起こっているのかを正確に知っているsudo rm必要があります。ZSHを使用することで、開始するコマンドラインの能力が証明されるため、これをここに示します。


1
おかげで、長い間私を悩ませてきた何かのためのそのようなシンプルなソリューション!
ディーン

7
-rディレクトリは関係なく、必要ないので、使用しないことをお勧めします。これを省略すると、誰かsudo rm -rf / private/var/log/asl*.aslが誤って(プライベートの前にスペースを)入力した場合の涙が少なくなります。
ディーン

1
またはさらに確実な、cd /private/var/log/aslそしてrm -f *.asl。また、記録のために、この回答は、10秒に迫っていた起動時間から私を救ってくれました、ありがとう!
ギャレットディスコ

1
私のために働いた!ところでtrash /private/var/log/asl*.asltrashもちろん、インストールする必要があります。brew install trash
マイクD

12

私の最大の改善点は、plugin =()セクションからアイテムを削除することです。「github」および「brew」プラグインのロードは非常に遅くなります。

また、エイリアスを作成したハブも削除しました。このハブgitプロンプトを高速化しました。

私は「/ usr / bin / time zsh -i -c exit」を使用して起動時間を記録しましたがcompinit、私にとって十分な大きな違いは見られません。

他の人がそれをスピードアップするために何をしているかを聞くのは素晴らしいことです。


1
githubbrewプラグインを削除すると、すぐに問題が解決しました。
ピーターニーダーヴィーザー

gitそしてbrewプラグインは、私にとって非常に重要です。rubyプラグインを削除することで問題が解決しました。ありがとう。
イヴァンZGシャオ

6

プレインストールされたものを使用しています/bin/zshか?finkでインストールしたzshはzshテンプレートを含むために非常に遅くなりますが、バニラはすぐに起動します。

明示的なダンプファイル(compinit -d dumpfile)で実行すると高速になりますか?マニュアルページには、

compinitの次の呼び出しは、完全な初期化を実行する代わりに、ダンプされたファイルを読み取ります。


2
Oh My Zshを使用しています(デフォルトの/ bin / zshを使用していると思われます)。Oh My Zshのすべてのプラグインのロードを無効にすると、すぐにロードされますが、その場合compinitは呼び出されません。手動で呼び出すcompinitと、少し時間がかかります。たぶん、Oh My Zshがcompinitに非常に多くのバインディングを追加したからでしょうか?
エリ

5

現在、oh-my-zshは特別なgit設定オプションoh-my-zsh.hide-statusをチェックしてからステータスを照会します。だから実行

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

問題のあるリポジトリ。


私にとっては、でgitプラグインを無効にする必要がありました.zshrc。私は現在、遅いのzshを作っ遅いインターネット対応、との問題に直面しています
Paschalis

5

Zsh自体は、私にとっては約0.1秒で起動します。これで十分です。50,000個のコマンド履歴マークに近づくと、最初のプロンプトをロードするのに3秒以上かかったことがわかりました。

遅い起動のこれらの他のすべての理由を皆さんがどのように見つけているのか私は知りませんが、私の最初の推測はまさにそれでした。私はa mv ~/.zsh_history zsh_history_backupとbamをしました、3秒のスタートアップは0.1秒のスタートアップになりました。奇妙なこと/usr/bin/time /bin/zsh -i -c exitに、履歴に読み込むのにかかる時間をキャプチャできません。

ただし、zsh履歴に何万ものコマンドがない場合は、そうではありません。私の~/.zsh_history測定した1.8MB。大量のものをコマンドとして誤って端末に貼り付けることは非常に可能ですが、これは履歴をすぐに膨らませます(ただし、これは明らかに非常に破壊的である可能性があるため、行うことは非常に避けるべきです)。


これが答えです。oh-my-zshを使って派手な(多くのプラグインとアドオン)を行っていない場合、履歴ログが原因であることが保証されます。変更はすぐに反映されます。
セバスティ

2

テーマ「af-magic」を使用していました

「muse」に切り替えると問題が解決しました。

〜/ .zshrcを編集し、その行を変更します。

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

答えてくれたおかげで、af-magicから他の何かに変更することで問題が解決したことがわかりました。興味深いことに、af-magicを元に戻すことは、まだうまくいきます。フードの下で何が起こったのかわからない。
サラット

0

〜/ .oh-my-zsh / plugins /ディレクトリをクリアした後、速度が大幅に向上しました。内部には多くの未使用のプラグインがありました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.