Terminal

oh-my-zsh 的提示很慢:如何解決這個問題

  • April 6, 2022

我將 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> '

引用自:https://unix.stackexchange.com/questions/565905