web-dev-qa-db-ja.com

oh-my-zshプロンプトが遅い:これを修正する方法

私はmacOS 10.15.2をiTerm2、zsh 5.7.1、oh-my-zsh(テーマrobbyrussell)で使用しています。

プロンプトの印刷がbashの印刷に比べて少し遅いことに気づきました。たとえば、 enter、カーソルは最初に次の行の先頭に移動し、しばらくするとシェルプロンプトが表示され、カーソルが自然な位置に移動します。たとえば、→ ~はホームフォルダにいるときのプロンプトで、[]は私のカーソルです。Enterキーを押すと、次のようになります。

0-アイドルステータス

→ ~ []

1-を押した直後 enter

[]

2-アイドル状態に戻ります

→ ~ []

この速度低下は、Enterキーをすばやく複数回押すと特に顕著になります。この場合、空白行がいくつか表示されます。これは私が見るものです

→ ~
→ ~
→ ~

→ ~

→ ~


→ ~
→ ~
→ ~

→ ~ []

私はbashシェルから来ましたが、bashを使用する場合、そのような速度低下はありません。これがoh-my-zshまたはその自然な動作の問題かどうかはわかりません。これについて、そして最終的にはそれを修正する方法について、もっと知りたいのですが。ありがとう。

[〜#〜] ps [〜#〜]:問題はoh-my-zshに起因し、すべてのプラグインを無効にしても引き続き発生します。

[〜#〜] pps [〜#〜]:以前にこの質問をSOに投稿しました。 ser1934428 に感謝し、この質問をここに移動するように提案してくれた。

1
floatingpurr

Oh-my-zshがデフォルトでプロンプトに何を表示するのかわかりません。多分それはバージョン管理ステータスを特定しようとします、それは時間がかかるかもしれない非常に人気のあるプロンプトコンポーネントです。

何が起こっているかを確認するには、 set -x

→〜
→〜 セット-xプロンプトを計算するために実行されるコマンドのトレース
→〜
プロンプトを計算するために実行されるコマンドのトレース
→〜 + xを設定
 + zsh:3>セット+ x 
→〜
→〜

トレースが長すぎて画面からスクロールできない場合は、次のコマンドでファイルにリダイレクトします。

exec 2>zsh.err

これにより、トレースだけでなく、すべてのエラーメッセージがファイルに送られます。トレースとエラーをターミナルに戻すには、次を実行します。

exec 2>/dev/tty

PS4 。これは プロンプトエスケープ を含むことができるフォーマット文字列です。たとえば、正確なタイミング情報を追加するには:

PS4='%D{%s.%9.}+%N:%i> '