0%

终端(Terminal)美化与扩展

最近由于工作需要,和终端命令行打交道的时间越来越多了,最近便查了一下美化命令行的方法,记录在此以供查阅~另外还推荐一个网站terminalsare.sexy,提供了很多与terminal美化相关的软件。

命令提示符(Prompt)美化

相信不少朋友也见过如下图所示美化过的命令提示符 powerline-shell这个效果的实现方式是通过安装名为Powerline的扩展程序。Powerline是一套可拓展的状态栏提示工具,可以给各种Terminal Emulator和Vim等工具增加状态栏的提示,并且十分好用~

Powerline有很多版本,有直接通过shell配置脚本实现的,也有通过独立程序进行显示的(如下列所示)。我选择的是原版powerline,安装方便,适用软件多,并且可以自行扩展。 - powerline: 这应该是最初的也是最全的powerline,基于Python - powerline-shell: 这是针对美化shell的版本,同样基于Python,配置比上面的简单 - powerline-go: 用go语言写的版本,运行更快 - bash-powerline: 用bash编写的用于bash的powerline

原版powerline的安装非常简单,用pip安装即可:(sudo) pip install powerline-status。安装完以后根据官网的教程更改对应的配置文件即可~我只对bash进行了美化,因为bash是最常用的shell。使用bash的话建议按照教程里的指示,在命令行配置文件中开启daemon来提高加载速度。另外一个小技巧是,由于Python2的启动速度比Python3快,因此推荐用Python2来安装powerline。

安装好powerline后下一步是自定义,这部分内容在powerline的文档里也有描述,不过它的文档写的不太好。。参考powerline安装目录下的配置文件(如果用系统pip安装的话位置是在/usr/local/lib/python2.7/dist-packages/powerline/config_files下),在用户配置目录下~/.config/powerline新建对应的配置文件,然后修改相应的条目即可自定义配置了~比较实用的一项修改是将shell的默认theme改为default_leftonly,不增加这个改动的话不会有git状态的显示。。(并不知道是什么原理)

如果使用原生Ubuntu或者VSCode内置terminal的话还可能会遇到提示符乱码的原因,这是由于powerline使用了非常规的符号,因此需要安装额外的字体。一般会选择安装NerdFont,这是一系列打上符号补丁的字体,其中我个人比较喜欢的字体是DejaVu Mono Nerd~这些字体还可以在programmingfonts在线预览,挑选喜欢的后将Terminal默认字体更改即可。(注:ubuntu下的查看字体列表命令是fc-list

tmux安装及美化

tmux是非常著名的Terminal Multiplexer,也就是终端多开程序。很多命令行模拟器其实已经支持多标签页了,如gnome terminal和Konsole,多开的功能其实也已经得到满足了。(顺带一题,ubuntu下新开terminal窗口的默认快捷键是Ctrl+Alt+T,新开标签页的默认快捷键是Ctrl+Shift+T。)。但还需要tmux是因为需要tmux的session管理功能,这个对远程访问的时候非常有用。有时希望在服务器远端跑一个训练,开上以后就不想管了,那这时如果使用ssh的话就得一直把远程的session开着,或者运行命令后移到后台,但这时停止程序就蛋疼了。另外如果想远程开几个terminal的话也很麻烦,要开好几个ssh的窗口。有了tmux就简单了,你可以用tmux多开然后一次性detach多个session,之后再attach回来进行管理,tmux支持多个程序显示在同一个terminal里,也就不用开很多个ssh了!总之用上tmux后感觉还是很爽的,只不过tmux有一定的学习成本。

tmux安装也很简单,ubuntu下的话直接使用apt安装即可。另外还可以安装tmuxinator来简化tmux的一些流程。上面用到的powershell也是支持tmux的,可以美化tmux的状态栏。具体安装方法参见powerline文档。另外tmux的操作方法可以去搜cheatsheet~这也有一篇博文介绍了tmux的基本操作,可以参考~

历史记录搜索

著名的fish有个颇受称赞的功能是历史命令自动补全(见下图),在zsh里面也有对应的插件可以实现这个功能(zsh-autosuggestions)。但是bash由于比较辣鸡,无法支持这样的功能,因此只能另寻它法了。。 fish autosuggestion

比较有名的方法是使用一个模糊搜索的软件fzf。这个软件提供文件、程序和命令历史的搜索,有点类似于windows下的Listary。如果配置在shell中的话可以在按下快捷键后出现一个搜索框,搜索历史命令。这个虽然没有fish的自动补全好用,但是也非常方便了~安装fzf推荐通过文档中的方法使用git安装。安装过程中会提示你是否绑定终端快捷键,选择yes后在终端按下Ctrl+R就可以弹出搜索框了,非常方便~如果直接运行fzf命令的话就会进入完整的搜索界面,可以搜索文件,具体的使用方法还是参考官方文档了~

Powershell美化

由于Powershell不是传统的sh体系,因此目前powerline还没有官方支持powershell。这里先mark几个博客,设置好了再更新上来~ > - https://github.com/JanDeDobbeleer/oh-my-posh > - https://blog.walterlv.com/post/beautify-powershell-like-zsh.html#%E5%AE%89%E8%A3%85-oh-my-posh > - https://gist.github.com/jchandra74/5b0c94385175c7a8d1cb39bc5157365e > - https://dev.to/myleftshoe/comment/8b58 > - https://www.reddit.com/r/archlinux/comments/45lkyj/is_new_always_better_urxvt_vs_xterm_tmux_vs/

Treat me some coffee XD