為什麼 bash 和 zsh 中的某些(通常很長)指令會出現亂碼?

為什麼 bash 和 zsh 中的某些(通常很長)指令會出現亂碼?

很多時候,當我在bash 或zsh 中輸入長命令時(這是我確信我在其中見過的唯一兩個shell),遊標會扭曲到我輸入的字串中間的某個位置,任何人都可以解釋為什麼會這樣,是否可以做些什麼?

我注意到,當我瀏覽shell 的歷史記錄(使用箭頭鍵)時,經常會發生這種情況,當我遇到長條目時,長的新條目會與前一個條目混合在一起,從而使文字出現亂碼。

我有一個短字串的例子,我剛剛注意到:

歷史包含:

mkdir sune1
mkdir sune2

如果我導航到mkdir sune1,然後導航到mkdir sune2,我希望我的命令列是mkdir sune2(因為這是我現在導航到的) - 但我得到的是mkdir1sune2

多年來我經常注意到這一點,但從來沒有讓它太困擾我,但我認為是時候做出改變了!那麼,有什麼想法嗎?

答案1

您的提示字串可能錯誤地轉義了非列印字元。如果提示符號中有任何類似顏色變化的內容,則需要在終端轉義序列周圍放置,\[以便\]bash 可以知道它們不佔用螢幕上的空間 - 否則它會錯誤計算實際命令在螢幕上的位置,並更新它在錯誤的地方。看本節來自 TLDP。在 zsh 中,放置轉義序列%{%}周圍轉義序列。

相關內容