當在 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 組織)
也可以看看: