Terminal
oh-my-zsh 的提示很慢:如何解決這個問題
我將 macOS 10.15.2 與 iTerm2、zsh 5.7.1 和 oh-my-zsh(主題 robbyrussell)一起使用。
我注意到提示列印相對於 bash 來說有點慢。例如,如果我按下
enter
,游標最初會移動到下一行的開頭,然後過了一會兒,shell 提示符進入並且游標移動到它的自然位置。例如,如果→ ~
是當我在我的主文件夾中時的提示,並且[]
是我的游標,當我按下輸入鍵時,我看到:0 - 空閒狀態
→ ~ []
1 - 按下後立即
enter
[]
2 - 返回空閒狀態
→ ~ []
當我快速按輸入鍵多次時,這種緩慢尤其明顯。在這種情況下,我看到一些空白行。這就是我所看到的
→ ~ → ~ → ~ → ~ → ~ → ~ → ~ → ~ → ~ []
我來自 bash shell,當我使用 bash 時,並沒有那麼慢。我不確定這是 oh-my-zsh 或其自然行為的問題。我想了解更多有關此問題的資訊,並最終了解如何解決它。謝謝。
PS:問題來自 oh-my-zsh,即使我禁用了所有外掛,它仍然存在。
PPS:我之前在 SO 上發布了這個問題。感謝user1934428的幫助並建議我將這個問題移到這裡。
我不知道預設情況下 oh-my-zsh 在提示中放置了什麼。也許它會嘗試辨識版本控制狀態,這是一個非常流行的提示組件,可能會很耗時。
要查看發生了什麼,請使用 . 打開命令跟踪
set -x
。→ ~ → ~ **set -x** *跟踪為計算提示而執行的命令* → ~ *為計算提示而執行的命令的跟踪* → ~ **set +x** +zsh:3> 設置 +x → ~ → ~
如果跟踪太長以至於滾動到螢幕外,請將其重定向到一個文件
exec 2>zsh.err
這會將所有錯誤消息定向到文件,而不僅僅是跟踪。要在終端上恢復跟踪和錯誤,請執行
exec 2>/dev/tty
您可以通過自定義跟踪格式
PS4
。這是一個可以包含提示轉義的格式字元串。例如,要添加精確的時間資訊:PS4='%D{%s.%9.}+%N:%i> '