zsh 中的 Tab 補全會導致重複字符

zsh 中的 Tab 補全會導致重複字符

當在 zsh 中使用製表符補全時,使用 ohmyzsh,在相對較新的 arch 安裝中,前兩個字元將重複自身並且變得不可刪除。

例如,我輸入yay -S terminato,然後按 Tab 鍵自動完成終止符,對吧?它工作正常,我可以像往常一樣瀏覽結果,但行的開頭,而yay -S term...不是yayay -S term...

當我按退格鍵以糾正錯誤時,我發現我無法刪除過去的yay,從而ya在一開始就留下了我無法刪除的。

這僅適用於單行,實際上不會影響任何內容,即使有兩個不屬於的字符,該命令仍然會正確執行。

我嘗試過其他模擬器,但問題仍然存在,即使在基本 tty 中也是如此。

按 Enter 或 ctrl c 移至下一行會重設新行,但舊行仍保留其懸空字元。

需要明確的是,所有帶有製表符補全的命令都會發生這種情況,而不僅僅是耶。

答案1

這意味著已經打印了某種錯誤,但是由於錯誤訊息打印的字符,命令行在錯誤之上被重新繪製,儘管位置稍有錯誤。

您無法刪除第一個的原因ya是因為它是列印的舊命令行的一部分。它實際上不是新命令行的一部分,因此您無法編輯它。換句話說,你的終端機中印了一些無法刪除的字符,而你的 shell 對它們一無所知。

若要深入了解此錯誤,請執行下列操作

set -vx

然後再次嘗試相同的完成,看看是否可以在輸出中的某處發現任何錯誤訊息。

答案2

我有同樣的問題。如上所述,它確實與區域設定有關。

我已經透過重新生成語言環境解決了這個問題。

sudo echo en_US.UTF-8 UTF-8 > /etc/locale.gen
sudo locale-gen

重新啟動後就開始正常運作了。

答案3

我有一個類似的問題,表現相似。我將問題追溯到 的值LC_ALL。我停止導出LC_ALL(和朋友)C並導出LANG=en_US.UTF-8,問題就消失了。

我將問題一分為二,在 tmux 中的 Zsh 中一個特定的 oh-my-zsh 主題。 (robbeyrussell我認為他是 oh-my-zsh 的第一個創建者,所以麵包屑現在指向「官方」GitHub 組織)

也可以看看:

相關內容