我在Arch linux中使用oh-my-zsh加載了robbyrussell主題。當我嘗試完成製表符時,最終會在提示符後附加殘餘字符。如果我刪除自動完成的字符,則不會刪除剩餘字符。使用ZSH完成製表符時的補餘字符
例如,如果我輸入:
~ /etc
然後選項卡,即其將
~ /e/etc/
具有低於選項的列表。即使我刪除/etc/
的/e
依然存在,我只能堅持:
~ /e
我不能刪除/e
。我必須執行一個命令來擺脫剩餘字符。
任何想法這裏發生了什麼?
我在Arch linux中使用oh-my-zsh加載了robbyrussell主題。當我嘗試完成製表符時,最終會在提示符後附加殘餘字符。如果我刪除自動完成的字符,則不會刪除剩餘字符。使用ZSH完成製表符時的補餘字符
例如,如果我輸入:
~ /etc
然後選項卡,即其將
~ /e/etc/
具有低於選項的列表。即使我刪除/etc/
的/e
依然存在,我只能堅持:
~ /e
我不能刪除/e
。我必須執行一個命令來擺脫剩餘字符。
任何想法這裏發生了什麼?
原來這是一個語言環境問題。直到我刪除了某個配置文件並重新運行它,運行locale-gen才運行。
你的建議對於提示很好。謝謝。
您可能對解決方案更具體,其他用戶(如我)可能無法理解您是如何解決問題的。 –
我希望我可以更具體一些,但我最初從UTF8更改爲/etc/locale.gen中的拉丁文,當我將其更改回UTF8時,我開始出現問題。我刪除了很多文件,我找不到那篇文章告訴我哪個文件能幫我解決這個問題。最後,它將以/etc/locale.gen爲正確並以root身份運行locale-gen。我已經在同一個盒子上安裝了新的Arch,並且自此以後再也沒有這個問題。 –
正如西蒙建議的那樣,您使用的提示可能是使用不可打印的字符(如顏色轉義碼),但並不表示這些字符是不可打印的。所以當提示重新繪製時,終端認爲提示比實際更寬。
您指示zsh提示符中的字符序列使用%{
和%}
分隔符具有零寬度。例如我的提示是:
%{%(?.%F{green}.%F{red})%}➜%{%f%}
(?...)
的是三元它設置提示的顏色和它已被標記以指示它是零寬度。以同樣的方式,%f
重置顏色並且也被標記。
您可以通過更新PS1變量來測試您的提示更改,以便嘗試不同的安排並查看適合您的方法。
您可以用這種方式標記任意個字符,因此請小心使您的提示太短!
我有同樣的問題,所以我尋求一個解決方案,我都遇到過這樣的文章: https://wiki.archlinux.org/index.php/Locale
而且,正如有人建議,使一些區域的全系統,你只需要取消註釋所需語言環境/etc/locale.gen
,例如,在我的情況:
en_US.UTF-8 UTF-8
保存該文件上的變化後,對執行命令行(作爲root):
locale-gen
重新啓動,它的工作原理!(至少對我來說)
看來,我與語言環境配置和非UTF8配置
在我的情況的問題修復是:
export LC_ALL="en_US.UTF-8"
,並保持其永久添加行.zshrc :在Ubuntu文檔
echo "export LC_ALL=en_US.UTF-8" >> .zshrc
我有一個類似的問題,雖然不是用oh-my-zsh,而是提示符;對我來說,解決方案是從我的配置中刪除:
ZLE_PROMPT_INDENT=0
沒有進一步的信息,它可能是你的提示中缺少的字符或兩個。例如,閱讀[這個問題](http://stackoverflow.com/questions/7957435/zsh-auto-complete-screws-up-command-name/10644062#10644062)。你在使用最新的oh-my-zsh嗎?你有沒有修改過提示?我可以從GitHub下載oh-my-zsh進行測試,並準確表示您的設置? :) – simont