我在Arch linux中使用oh-my-zsh并加载了robbyrussell主题.当我尝试选项卡完成时,我最终会在提示符后附加补充字符.如果删除自动完成的字符,则不会删除剩余字符.
例如,如果我输入:
~ /etc
Run Code Online (Sandbox Code Playgroud)
然后选项卡,它转向
~ /e/etc/
Run Code Online (Sandbox Code Playgroud)
以下是一系列选项.即使我删除/etc/了/e遗体,我仍然坚持:
~ /e
Run Code Online (Sandbox Code Playgroud)
我无法删除/e.我必须执行一个命令来摆脱残余角色.
知道这里发生了什么吗?
cor*_*cho 63
我似乎遇到了语言环境配置和非UTF8配置的问题
在我的情况下,修复是:
export LC_ALL="en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)
并保持永久添加到.zshrc的行:
echo "export LC_ALL=en_US.UTF-8" >> .zshrc
Run Code Online (Sandbox Code Playgroud)
更多信息在Ubuntu doc https://help.ubuntu.com/community/Locale
Mat*_*len 25
正如simont所建议的那样,您使用的提示可能是使用不可打印的字符(如颜色转义码),但并不表示这些字符是不可打印的.因此,当重新提示提示时,终端认为提示比实际更宽.
您使用%{和%}分隔符指示zsh提示符中的字符序列的宽度为零.例如我的提示是:
%{%(?.%F{green}.%F{red})%}?%{%f%}
Run Code Online (Sandbox Code Playgroud)
这(?...)是一个三元组,用于设置提示的颜色,并且已标记为表示宽度为零.以同样的方式%f重置颜色并且也已经标记了颜色.
您可以通过更新PS1变量来测试对提示的更改,这样您就可以尝试不同的安排,看看哪些适合您.
你可以用这种方式标记任何字符,所以要小心你的提示太短!
我有同样的问题,所以在我寻求解决方案时我遇到了这篇文章:https: //wiki.archlinux.org/index.php/Locale
并且,正如所建议的那样,要在系统范围内启用某些语言环境,您只需要取消注释所需的语言环境/etc/locale.gen,例如,在我的情况下:
en_US.UTF-8 UTF-8
Run Code Online (Sandbox Code Playgroud)
保存对文件的更改后,在命令行上执行(以root身份):
locale-gen
Run Code Online (Sandbox Code Playgroud)
重启,它的工作原理!(至少对于我来说)
| 归档时间: |
|
| 查看次数: |
8776 次 |
| 最近记录: |