电力线PS1换行

时间:2017-04-07 00:52:30

标签: bash powerline

上下文

  

从arch linux软件包安装电力线,而不是从pip。

PS1脚本

update-ps() {
    export PS1="$(powerline shell aboveleft)"
    export PS2="$(powerline shell left)"
}

export PROMPT_COMMAND="update-ps;$PROMPT_COMMAND"

电力线配置

问题

我遇到与him相同的问题,当我写几行字符换行时,我开始写同一行,覆盖我已写的内容(包括ps1)。

我知道这可能是一个不可打印的角色问题,但这不是意味着它是一个电力线错误吗?还有什么其他问题?

2 个答案:

答案 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

解决了问题