电力线 PS1 线包装



上下文

  • GNU bash4.4.12(1)-release
  • 电力线2.5.2-1

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

PS1 脚本

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

电力线配置

  • config.json
  • 颜色.json
  • colorschemes/shell/default.json
  • themes/shell/default.json

问题

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

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

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

解决了问题

当语言环境不正确时,或者当 glibc 是使用不支持 unicode 字符的"C"语言环境构建时,可能会发生这种情况。Powerline 使用不间断空格(2 字节),并且还对三角形使用 2 字节 unicode 字符。对于这些字符中的每一个,外壳(不是电力线)认为已打印 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 env var 来覆盖它:

LC_ALL=en_US.UTF_8

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

相关内容

  • 没有找到相关文章

最新更新