如何安装和使用Powerline插件?

Powerline是一个插件,用于在vim、tmux和bash、zsh的命令提示符中显示信息和漂亮的状态栏。

Vim状态栏enter image description here enter image description here enter image description here enter image description here 如何在Ubuntu上安装和设置Powerline以适用于不同的应用程序和shell?


2只是一条注释。我的插件安装到了dist-packages而不是site-packages,所以我必须将应用程序指向那个目录。看起来对基于Debian的发行版来说,配置多个Python安装是一种惯例。无论如何,我花了一些时间才弄清楚这一点,希望这可以帮助你们避免一些麻烦。 - Eduardo M - bbaaxx
关于您的信息:我在14.04版本中添加了一种新的、更简便的安装方法。 - don.joey
5个回答

插件安装:

安装 python-pipgit:按下 Ctrl+Alt+T 组合键打开终端并运行:

sudo apt-get install python-pip git
  • 每个用户:
    在终端中运行:

    pip install --user git+git://github.com/Lokaltog/powerline
    

    通过使用您喜欢的编辑器修改~/.profile,将~/.local/bin添加到$PATH中:

    gksudo gedit ~/.profile
    

    并在文件末尾添加以下行:

    if [ -d "$HOME/.local/bin" ]; then
        PATH="$HOME/.local/bin:$PATH"
    fi
    
  • 系统范围内:
    在终端中运行:

    su -c 'pip install git+git://github.com/Lokaltog/powerline'
    

字体安装:

Powerline 提供两种安装所需字体的方式。如果您使用以下终端之一:Gnome TerminalKonsolelxterminalstXfce TerminalTerminatorGuakeYakuake,那么您应该使用 "Fontconfig" 方法。

  • Fontconfig:(推荐)

    • 用户级别:
      在终端中运行以下命令:

      wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
      mkdir -p ~/.fonts/ && mv PowerlineSymbols.otf ~/.fonts/
      fc-cache -vf ~/.fonts
      mkdir -p ~/.config/fontconfig/conf.d/ && mv 10-powerline-symbols.conf ~/.config/fontconfig/conf.d/
      
    • 系统级别:
      在终端中运行以下命令:

      wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
      sudo mv PowerlineSymbols.otf /usr/share/fonts/
      sudo fc-cache -vf
      sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/
      
  • 修补字体:
    只有当"Fontconfig"方法对您无效或者您使用的终端不同于上述提到的终端时,才使用此方法。

    1. powerline-fonts下载您选择的字体。
    2. 将修补后的字体移动到~/.fonts/(用户级别安装)或/usr/share/fonts(系统级别安装)。
    3. 运行fc-cache -vf ~/.fonts以更新字体缓存,运行sudo fc-cache -vf以进行系统级更新。
要在Gvim中使用修补过的字体,请参考此链接answer,并且要更改您所使用的终端的字体,请查看此问题:如何更改各种终端仿真器的字体?。在安装字体后,您可能需要重新启动系统以使更改生效。
用法:(适用于每个用户的安装)
  • Vim状态栏:
    将以下内容添加到您的~/.vimrc/etc/vim/vimrc文件中:

    set rtp+=$HOME/.local/lib/python2.7/site-packages/powerline/bindings/vim/
    
    " 始终显示状态栏
    set laststatus=2
    
    " 使用256种颜色(仅在终端支持256种颜色时使用此设置)
    set t_Co=256
    
  • Bash提示符:
    将以下行添加到您的~/.bashrc/etc/bash.bashrc文件中:

    if [ -f ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh ]; then
        source ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh
    fi
    
  • Zsh提示符:
    将以下行添加到您的~/.zshrc/etc/zsh/zshrc文件中:

    if [[ -r ~/.local/lib/python2.7/site-packages/powerline/bindings/zsh/powerline.zsh ]]; then
        source ~/.local/lib/python2.7/site-packages/powerline/bindings/zsh/powerline.zsh
    fi
    
  • Tmux状态栏:
    将以下行添加到您的~/.tmux.conf文件中:

    source ~/.local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf
    set-option -g default-terminal "screen-256color"
    

    如果您的终端支持256种颜色,请通过修改~/.bashrc/etc/bash.bashrc并添加以下行来将TERM环境变量设置为xterm-256color

    export TERM=xterm-256color
    

    要检查您的终端是否支持256种颜色,请查阅您的终端文档或搜索。大多数流行的终端都支持256种颜色。

使用方法:(适用于全局安装)
  • Vim状态栏:
    将以下内容添加到您的~/.vimrc/etc/vim/vimrc文件中:

    set rtp+=/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/
    
    " 始终显示状态栏
    set laststatus=2
    
    " 使用256种颜色(仅在您的终端支持256种颜色时使用此设置)
    set t_Co=256
    
  • Bash提示符:
    将以下行添加到您的~/.bashrc/etc/bash.bashrc文件中:

    if [ -f /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh ]; then
        source /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh
    fi
    
  • Zsh提示符:
    将以下行添加到您的~/.zshrc/etc/zsh/zshrc文件中:

    if [[ -r /usr/local/lib/python2.7/dist-packages/powerline/bindings/zsh/powerline.zsh ]]; then
        source /usr/local/lib/python2.7/dist-packages/powerline/bindings/zsh/powerline.zsh
    fi
    
  • Tmux状态栏:
    将以下行添加到您的~/.tmux.conf文件中:

    source /usr/local/lib/python2.7/dist-packages/powerline/bindings/tmux/powerline.conf
    set-option -g default-terminal "screen-256color"
    

    如果您的终端支持256种颜色,请通过修改~/.bashrc/etc/bash.bashrc并添加以下行来设置TERM环境变量为xterm-256color

    export TERM=xterm-256color
    

    要检查您的终端是否支持256种颜色,请查阅您的终端文档或搜索。大多数流行的终端都支持256种颜色。

配置:

有关配置 Powerline 的详细信息,请参阅:配置

卸载:

要卸载 Powerline,请在终端中运行以下命令之一:

  • 卸载每个用户的安装:

    pip uninstall powerline
    
  • 卸载系统范围的安装:

    su -c 'pip uninstall powerline'
    

来源: Powerline beta文档

可选方案:

如果您只是为了在Vim中安装Powerline,您可以尝试一下vim-airline,它更加自定义和轻量级。


1还应该提到,用户需要将他们的模拟器设置为“登录”,这样~/.profile文件才能正确运行,否则可能会遇到无法使用终端的问题,因为找不到powerline命令。 - Jordon Bedwell
Basharat Sial的回答非常好;然而,当尝试让vim指向系统范围安装的python库中的包时,对我有效的路径是:/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/ 基本上只需将“Usage”步骤中出现的site-packages替换为dist-packages。希望这对遇到相同问题的人有所帮助。 - alphurdex
1如下所指,系统范围的安装路径为 /usr/local/lib/python2.7/dist-packages/powerline/。因此,在 vimrc 文件中,您应该指向 /usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/ - dinigo
1@demil133 已修复! - Basharat Sialvi
1对于我来说(在Ubuntu 12.04上),每个用户的字体安装都不起作用,我不得不系统范围内安装字体。 - jmarceli
最后在.bashrc中设置这个帮助了 LANG=en_US.utf8。 - RajaRaviVarma
3在Ubuntu 15.04中不再起作用。 - Goddard
Vim应该编译时加入Python支持吧? - Alan Kis
我已经逐行按照你的解决方案进行操作。但是在我的bash终端中没有显示箭头符号。但是在Vim中可以显示。请帮忙解决,谢谢。 - TheLinuxEvangelist
没关系,我找到了解决方案: 我在我的.bashrc文件中添加了以下行:export LC_CTYPE="en_US.UTF-8"之前是"en_IN"。 - TheLinuxEvangelist
你能否添加关于在“Windows Linux子系统”上安装的说明? - Oneezy
@TheLinuxEvangelist 在添加了那行之后,我仍然没有在提示符上得到箭头符号。 - user616624
请将答案更新为最新更改。 - Anwar
请按照答案中的步骤进行操作,并更改 LC_TYPE 设置,可能是由于您的地区设置而导致其为 en_IN。 - TheLinuxEvangelist
@TheLinuxEvangelist,抄送:@Anwar,终于成功了,但不是你建议的方法。首先我运行了locale命令来检查语言设置,所有变量都显示为en_IN。所以我需要运行sudo locale-gen en_US en_US.UTF-8,然后再运行sudo dpkg-reconfigure locales。在配置菜单中,当它要求我选择要重新生成的语言时,我使用空格键取消选择了en_IN,并在下一个菜单中选择了en_US-UTF-8。所以感谢你指导我朝正确的方向前进。 - user616624
将以下行添加到.bashrc文件对我有效:if [ -d "$HOME/.local/bin" ]; then PATH="$HOME/.local/bin:$PATH" fiexport POWERLINE_COMMAND=powerlineif [ -f ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh ]; then source ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh fi - Naresh Joshi
对于vim来说,它是可以工作的。但是对于bash,我遇到了以下错误:bash: /home/wolfgang/.local/lib/python2.7/site-packages/powerline/bindings/bash/../../../scripts/powerline-config: 没有这个文件或目录。 - LRDPRDX
适用于WSL(Ubuntu 18.04)。这是互联网上关于Powerline安装和设置的最好解释。甚至比官方文档还好笑 :-D - codeartist
1在19.04版本中,Powerline现在使用Python 3,并且路径已更改为(/usr/share/powerline/bindings/bash/powerline.sh)。 - Scott P.

从Ubuntu 14.10(utopic)开始,universe repository中提供了一个powerline软件包。要安装它,只需在终端中运行以下命令: sudo apt-get install powerline 或者,您也可以通过使用Ubuntu软件中心来安装它。

3这个并不能真正解决我的问题。除了这个之外,还需要做其他什么才能使它起作用吗? - Michael Aquilina
8是的,有的,但这取决于您想如何使用powerline。关于如何将其集成到常见应用程序中的说明可以在/usr/share/doc/powerline目录下的软件包文档中找到。该软件包中相关的文件是README.Debian - jcharaoui
如果在文档中找到了说明,请将它们放在这里。否则,仅仅写下安装命令是没有意义的,因为安装并不会产生任何效果。 - Anwar
应该补充说明的是,这种方法不包括bash绑定,而且许多其他绑定也缺失。 - Goddard
2所有的绑定都包含在powerline软件包中,包括bash绑定。它们被安装在/usr/share/powerline/bindings目录下。 - jcharaoui
安装了字体系统后,为我解决了这个问题。 - Daniel Andrei Mincă

虽然这个问题已经得到了解答,但在当前的情况下,安装Bash可能有点过度。我不知道早期的软件仓库中是否有Powerline,但现在的仓库中是有的。也就是说,对于Bash来说,它的抽象程度要低得多。
使用以下命令安装Powerline:
sudo apt install powerline 要进行每个用户的配置,请使用您选择的文本编辑器编辑您的.bashrc文件。
gedit ~/.bashrc
然后将以下内容追加到文档中:
if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/share/powerline/bindings/bash/powerline.sh
fi

对于系统配置,请以root身份使用您选择的文本编辑器编辑/etc/bash.bashrc

sudo su后跟gedit /bash.bashrc

并将此附加到文档中;

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/share/powerline/bindings/bash/powerline.sh
fi

在Gnome终端上,我还需要做其他的事情吗? - eri0o
这个答案也适用于Ubuntu 21.04。 - apaderno

在14.04上使用最新版本的Powerline

安装了最新版本的Powerline后,事情变得更加容易了。以下是我的操作步骤。

  1. 在你的 .vimrc 文件中安装 Vundle 并进行设置
  2. 通过 Vundle 包安装程序安装 powerline
  3. 安装 字体(只需运行 ./install.sh 脚本)。
  4. 在你的 .vimrc 文件中使用以下设置:

    Bundle 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
    " Powerline 设置
    set laststatus=2
    set term=xterm-256color
    set termencoding=utf-8
    set guifont=Ubuntu\ Mono\ derivative\ Powerline:10
    " set guifont=Ubuntu\ Mono
    let g:Powerline_symbols = 'fancy'
    
  5. 进入你的 ~/.vim/bundles/powerline/fonts 文件夹,双击其中的字体并进行安装。
  6. (在某些系统上,你需要将 powerline 字体配置复制到 /etc/fonts/conf.d 中)
  7. 退出并重新登录。
注意:您不再需要通过pip安装它。

这种方法如何影响在shell、tmux等中使用Powerline的可用性? - Dennis Williamson
@DennisWilliamson 老实说,我不清楚,因为我在这些情况下没有使用过 powerline。由于所有的配置都是针对 vim 的,我可以想象这不会对其他情境产生任何影响。 - don.joey
根据文档,它们不应该并排使用(请参阅警告框):https://powerline.readthedocs.org/en/latest/usage/other.html#vim-statusline - Andrew
@Andrew 我不确定我理解你的意思。你是说你不应该同时通过 Vundle 和 pip 安装两者吗?因为那不是我建议的,对吧? - don.joey
是的,那就是我的意思。这不是你之前建议的吗?Vundle只适用于Vim,但如果你想在多个地方使用它,那么最好只通过pip安装,然后再为Vim进行配置。 - Andrew

如果你只想要Bash扩展,我写了一个小脚本来自动化Basharat Sialvi所写的手动步骤(非常感谢他提供的完整参考)。
总结一下(但请先看一下脚本,因为如果它让你的电脑飞出窗外或删除你的文件,我不负责):
git clone git@github.com:vincepii/ubuntu-powerline-bash.git
cd ubuntu-powerline-bash
./install.sh

https://thealarmclocksixam.wordpress.com/2016/02/28/quickly-setup-powerline-for-bash-in-ubuntu/

https://github.com/vincepii/ubuntu-powerline-bash


嗨,我已经使用了你的脚本文件。但是在我的bash终端上没有显示箭头符号。虽然在vim中可以看到它们。 - TheLinuxEvangelist
没关系,我找到了解决办法: 我在我的.bashrc文件中添加了以下行:export LC_CTYPE="en_US.UTF-8"之前是"en_IN"。 - TheLinuxEvangelist