2

语境

Powerline 从 arch linux 软件包安装,而不是从 pip。

PS1 脚本

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

export PROMPT_COMMAND="update-ps;$PROMPT_COMMAND"

电力线配置


问题

我和他有同样的问题,当我写几个字符时,换行,我开始在同一行写,覆盖我已经写的(包括 ps1)。

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

4

2 回答 2

1

对我来说,在 ~.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

解决了这个问题

于 2019-10-22T07:02:28.873 回答
0

当语言环境不正确时,或者当 glibc 使用不支持 unicode 字符的“C”语言环境构建时,可能会发生这种情况。Powerline 使用不间断空格(2 字节),并且三角形也使用 2 字节 unicode 字符。对于这些字符中的每一个,shell(不是 powerline)认为已经打印了 1 个额外的字符。如果提示中有 5 个空格和 3 个三角形,则提示将在到达行尾之前换行 8 个字符。从那里一切行为不正确。这仅与 Powerline 相关,因为 Powerline 在提示中使用 unicode 字符。

解决方法是更正语言环境,以便 shell 理解 2 字节 unicode。您可以运行“locale”以查看 shell 是否使用“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 环境变量来覆盖它:

LC_ALL=en_US.UTF_8

之后,所有新终端都正常运行。

于 2019-04-19T18:12:20.307 回答