4.4.12(1)-release
2.5.2-1
从arch linux软件包安装电力线,而不是从pip。
update-ps() {
export PS1="$(powerline shell aboveleft)"
export PS2="$(powerline shell left)"
}
export PROMPT_COMMAND="update-ps;$PROMPT_COMMAND"
我遇到与him相同的问题,当我写几行字符换行时,我开始写同一行,覆盖我已写的内容(包括ps1)。
我知道这可能是一个不可打印的角色问题,但这不是意味着它是一个电力线错误吗?还有什么其他问题?
答案 0 :(得分:0)
当语言环境不正确或使用“ C”语言环境构建glibc(不支持Unicode字符)时,可能会发生这种情况。 Powerline使用不间断空格(2字节),并且对三角形也使用2字节unicode字符。对于这些字符中的每个字符,外壳程序(不是电源线)都认为已打印了一个额外的字符。如果提示中有5个空格和3个三角形,则提示在到达行尾之前将自动换行8个字符。从那里开始,一切都不正常。仅在Powerline在提示中使用Unicode字符的意义上,这才与Powerline有关。
解决方法是更正语言环境,以便外壳程序可以理解2字节的unicode。您可以运行“ locale”来查看外壳是否使用“ C”,在这种情况下,需要对其进行修复。对于我的应用程序,我们在运行Centos Linux的Docker映像中运行Powerline。我们必须修复/etc/yum.conf中的语言环境,才能使用utf8的小写形式,如下所示:
sed -i 's/UTF-8/utf8/' /etc/yum.conf
然后使用修复程序重建glibc-common:
yum reinstall glibc-common
此后,新的终端运行正常,提示正确包装。然后,在安装glibc之前,我们修改了Docker映像以修复yum.conf。但是,我们发现其中一个模块正在将语言环境改回C(LANG =“ C”),因此我们使用LC_ALL env var覆盖了它:
LC_ALL=en_US.UTF_8
此后,所有新终端均正常运行。
答案 1 :(得分:0)
对我来说,更改〜.bashrc: 来自:
. /usr/local/lib/python2.7/dist-packages/powerline/bindings/shell/powerline.sh
到
. /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh
解决了问题