你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

介绍基于Powerline的CLI美化配置

[复制链接]
gaosmile 发布时间:2020-11-27 19:14

使用Bash,是Linux下开发的基本技能。虽然也有zsh、fish等流行Shell,但Bash是多数情况下的默认,基本中的基本。
3 a3 {# P0 C  R+ W

Shell的提示符(Prompt),默认在root下是#,在普通用户下是$,但这只能提示用户权限信息。Bash默认情况下做了一些强化,但信息较少,而且不够美观。

本文主要介绍基于Powerline的CLI美化配置。

Powerline简介

Powerline一开始是一个Vim的状态栏插件,后来发展成为Bash、zsh、fish等Shell的终端提示工具。此外,还支持tmux、IPython、Awesome、i3、Qtile等软件。

微信图片_20201127191316.png Powerline in Vim (and tmux)

在这个增强的状态栏中,我们可以看到Vim模式、Git分支、文件路径、Git状态等信息。不仅美观,而且实用。

在Bash中,Powerline也同样强大。由于场景与Vim不同,因此显示内容也不同,默认有用户名、当前路径、后台任务数等,远程模式下还有hostname。根据需要,也可以添加更多的系统元素,如上一命令返回值、时间、电池等。

微信图片_20201127191319.png Powerline in Bash (and tmux)

在tmux中,默认有Window编号、开机时间、日期、hostname等信息。

安装软件

一般情况下,直接使用pip即可安装。为了便于多用户使用,通常全局安装。需要特别注意的是,包被占,因在pypi.org的包名是powerline-status。

sudo pip install powerline-status
0 w0 T& X8 [4 U8 [" ]% W

似乎是由于作者失联,powerline-status的版本停留在了2.7,目前最新是2.8.1。如果需要更新,可以使用develop或master分支。

sudo pip install git+https://github.com/powerline/powerline.git@develop) b( E) `6 n$ L0 ^
安装字体

Powerline在显示时,使用了特殊字体。一般的字体配置,不能正确地展示。因此,需要安装其字体。

sudo apt install fonts-powerline
/ I- z, }; e/ N/ W" i4 U% D

如果在其它系统与环境,可以参考powerline-fonts的指导,手动安装。

git clone https://github.com/powerline/fonts.git5 _, Z: }3 g1 R# _! X( f" Q' n  x
cd fonts9 O7 \  @' ]% a2 q2 M. n* ^
./install.sh4 o3 F! X! o$ v! c' Q+ P; F6 p
配置

Powerline支持多种使用场景。其中,不同场景下需要不同的配置。

以下介绍五个场景的配置:

Vim2 a8 t: ?5 b2 C  w! i
Bash+ e3 J/ ?9 V+ F4 s
tmux/ o* V& i5 q% a6 }
IPython7 r2 A8 N- p1 ~
pdb
( p; J( H0 G2 l9 y8 p
Vim

Vim中,Powerline只是其状态栏插件。在~/.vimrc中,可以使用插件的方式添加。

Bundle 'powerline/powerline', {'rtp': 'powerline/bindings/vim'}
5 w' k* m! p& D4 {: Q) S% w" or
& e( U, `1 [% ~2 J6 G' UPlug 'powerline/powerline', {'rtp': 'powerline/bindings/vim'}$ C) S2 f- c5 f

也可以直接复用系统安装的powerline-status。

python3 << endpython: l& t4 D% Z& i) A3 k5 A6 }3 [0 o
from powerline.vim import setup as powerline_setup
8 u- v6 E2 R: o5 t& E( V; spowerline_setup()
# Z. L7 U8 b2 T" K5 Rdel powerline_setup, ?8 ^, B; n/ K& ^: v9 n
endpython& A9 w  p: ]+ n1 t9 F

以上两种配置方式,流行的是第一种,但这里推荐第二种。第一种有若干问题,某些场景下会报错提示有两个powerline。

BashPOWERLINE_HOME=$(python3 -c ": U8 L4 ]2 X1 [7 R$ n# V$ ^' X
import pkg_resources/ w; I) B8 x; P  Q' W8 ~. A: \
/ S  [) V1 w6 e" D  ], g* d1 p
try:
7 j  P- o( f$ ^    dist = pkg_resources.get_distribution('powerline-status')
: J0 c- {# [4 k! m% n    print(dist.location)  B( Q# S1 D2 \
except pkg_resources.DistributionNotFound:, B$ b; L2 @9 I
    raise SystemExit(1)" W' U9 q4 F" t3 w; ~
")2 T8 L; x. S# G' h
if [ -d "$POWERLINE_HOME" ]  h* C8 z7 {, j" p1 s
then
; |7 m8 q! u5 x4 _( H+ E6 l    source "$POWERLINE_HOME/powerline/bindings/bash/powerline.sh"
% U8 e6 }) j$ u8 g    export POWERLINE_HOME0 v9 D8 d2 h  F6 S' _( v
fi
( n# v, f( b9 T/ Z" w
tmux

在~/.tmux.conf文件中,添加一行:

source "$POWERLINE_HOME/powerline/bindings/tmux/powerline.conf"/ @/ z9 k7 C! c$ m. ^

其中,$POWERLINE_HOME是前面Bash配置中export的那个变量。因此,tmux的这个配置依赖于Bash的配置。

IPython

新增文件~/.ipython/profile_default/ipython_config.py,添加以下内容:

from powerline.bindings.ipython.since_7 import PowerlinePrompts% O3 x- B! u# t3 ]! q0 ~" N  P
c = get_config()
# q% x; R! c: f- T1 sc.TerminalInteractiveShell.simple_prompt = False
# F& ?% x4 o  L3 nc.TerminalInteractiveShell.prompts_class = PowerlinePrompts
4 Y: z  I# [5 v$ [* }" a8 `  o

不同IPython版本,需要使用不同的配置。这里是针对最新的7.x版本的配置,所以是since_7。对旧版本,需要使用旧的配置,可参考《other.rst#ipython-prompt》。

注意:由于since_7是在Powerline 2.8加入的功能,因此必须使用源码安装的方式。由于相同原因,官方文档也无法更新,因此最新文档只能查看源码中的文档文件。

pdb

使用以下命令,替代pdb,即可获得Powerline效果:

python3 -m powerline.bindings.pdb
" N( u0 a3 D/ w2 T% a. }

当然,这个命令比较长,不方便。可以使用以下alias。

alias pdb='python3 -m powerline.bindings.pdb'
) l( \! o, O& ]/ J4 h3 h
结语

在Powerline的这些增强与美化中,Vim、Bash和tmux是最有用的,另外两个纯粹只是美化而已。

CLI本身是高效的,但是也未免乏味。有了Powerline,不仅显著提高了颜值,更是提供了更多相关信息。习惯之后,会大幅提高工作效率。


7 h6 S) ]$ ~$ n. b
( G2 K4 V& p) D4 P
赞 收藏 评论0 发布时间:2020-11-27 19:14

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版