mac – zsh の起動が信じられないほど遅い

mac oh-my-zsh zsh

ZSHは新しいターミナルウィンドウを作成してから準備が整うまでに1秒半くらいかかる。犯人はcompinitであることは間違いないと思います

compinit,についての良いドキュメントが見つからないのですが、.zcompdumpのようにどこかのファイルに必要なものをすべてキャッシュしているはずです

スピードを上げるコツは?

  72  Eli  2011-01-24


ベストアンサー

oh-my-zshは、私のラップトップで起動するのに約1.5秒かかっていました。これを約0.25秒にするために取った手順をいくつか書いてみました

もう一人の親切な魂 oh-my-zshのコピーに私の変更を統合するために必要な手順をまとめました

最大の問題は、fpath が完全に定義された後に compinit が一度だけではなく、余分に何度も呼ばれていたことです。私はgithubのoh-my-zshのブランチでこれらの変更を行いました。この変更は github で議論されており、何人かの人にとってはうまくいっているようです。近い将来、変更が oh-my-zsh にマージされることを期待しています

37  Pat Regan  2011-04-25


ZSH にはそれなりの速度低下がありますが、もし Last Login: 行が表示される前にターミナルウィンドウが空白になっているのを見つけた場合、速度の改善を見るためにログファイルをクリアする必要があるでしょう。これは OSX Lion の時点ではまだ問題であり、数ヶ月ごとに行う必要があります。お恥ずかしい話ですが、私は知っています

コマンドは

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

もちろん、この記事を事前に読んでおく必要があります そして、sudo rmと書かれているものを実行することは考えておく必要があるので、何が起こっているのかを正確に知っておく必要があります。私は唯一のZSHのあなたの使用は、開始するコマンドラインを使用してあなたの能力を証明するので、ここにこれを置く

30  kylehotchkiss  2012-06-15


私の最大の改善点は、plugin=()セクションから項目を削除したことです。github’ と ‘brew’ プラグインの読み込みが非常に遅くなります

また、hubにエイリアスをかけていたhubも削除した

起動時間を記録するために ‘/usr/bin/time zsh -i -c exit’ を使っていましたが、 compinit は私にとって十分な違いがあるようには見えません

他の人がスピードアップのためにやっていることを聞いてみるといいですね

13  xer0x  2011-04-11


プリインストールされている/bin/zshを使っているのか、それとも別のものを使っているのか?私が尋ねるのは、私がfinkを通してインストールしたzshは、zsh templatesが含まれているため、ひどく遅く起動しますが、バニラはすぐに起動します

明示的な dumpfile (compinit -d dumpfile) を使って実行すると速くなりますか?マニュアルページにはそのように書かれています

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

8  Joey1978  2011-01-24


これで oh-my-zsh はステータスを問い合わせる前に特別な git 設定オプション oh-my-zsh.hide-status をチェックするようになりました。というわけで実行してみましょう

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

問題のあるリポジトリに

6  Artem Tikhomirov  2013-09-17


Zsh は単体でも 0.1 秒程度で起動しますが、これで十分です。ただ、50,000 コマンド履歴のマークに近づくにつれて、最初のプロンプトをロードするのに 3 秒以上かかることに気がつきました

私はあなたたちがどのように起動が遅いための他のすべての理由を見つけているのか分からないが、私の場合は、私の最初の推測がまさにそうだった。私はmv ~/.zsh_history zsh_history_backupを実行して、バン、3秒の起動が0.1秒の起動になりました。不思議なことに、/usr/bin/time /bin/zsh -i -c exitは、それがロードするのにかかる時間を履歴に取り込むのに失敗します

もしあなたがzshの履歴に何万ものコマンドを持っていないのであれば、これはそうではありません。私の~/.zsh_historyは1.8MBでした。誤って大きな塊をコマンドとしてターミナルに貼り付けてしまう可能性は非常に高く、履歴もすぐに肥大化してしまいます (ただし、これは明らかに非常に破壊的であるため、非常に避けるべきことです)

5  Steven Lu  2014-12-09


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

ミューズ」に切り替えることで解決しました

~/.zshrcを編集して、その行を修正してください

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

2  mika  2013-10-31


これらは私がシェルの起動速度を最適化し、コマンド実行時のラグを減らすために使用した手順です

  1. あなたがpowerlevel9kを使用している場合、私はすぐにpowerlevel10kに切り替えることをお勧めします

Powerlevel10kはZshのテーマです。それは、スピード、柔軟性とアウトオブボックスの経験を強調しています。これは、人気のあるPowerlevel9k zshテーマの再実装です。それは同じ構成を与えられた全く同じに見えますが、10-100倍速くプロンプトをレンダリングします。スタックのあらゆるレベルで最適化されており、オリジナルの 4 倍の速さでレポをスキャンできる libgit2 のパッチ版を使用するまでに至るまで、すべての段階で最適化されています。インスタントプロンプトのような機能を持つテーマに起因していなくても、Zsh の起動ラグを除去することができます

  1. 環境設定 -> プロファイル -> 一般 -> コマンドに移動し、ログインシェルの代わりにコマンドというオプションを選択し、その近くのボックスに以下のコマンドを貼り付けます
login -pfq username /usr/local/bin/zsh -il

新しいタブを起動しても最終ログイン時間が表示されないようになりました。もし /usr/local/bin/zsh に zsh がない場合は brew を使って zsh をインストールする必要があります。mac で提供されているデフォルトの zsh は /usr/bin/zsh にあり、5.2 のような古いバージョンを使っている可能性があります

  1. zsh での貼り付けを高速に行うには、ターミナルで以下のコマンドを実行します
mkdir -p $ZSH_CUSTOM/lib && touch $ZSH_CUSTOM/lib/misc.zsh
  1. ポイント2でログイン時間の遅さは解消されているはずですが、念のため以下のコマンドを実行してみてください。しかし、念のために以下のコマンドを実行してください
mkdir -p .hushlogin
  1. あなたが使用しているかもしれないプラグインのトンがあります。これらのプラグインを指摘して削除する必要があります。このためには、zsh プロファイリングが必要になります。詳細については、このリンクに従ってください
Profiling zsh startup time

1  Shubham Jain  2020-03-28


~/.oh-my-zsh/plugins/ディレクトリをクリアしてからは、本当にスピードアップしました。この中には使われていないプラグインがたくさん入っていました

0  pinguinjkeke  2016-03-22


以下を ~/.zshenv に追加します

skip_global_compinit=1

0  FacePalm  2018-11-14


タイトルとURLをコピーしました