Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 
文章代表作者个人观点,少数派仅对标题和排版略作修改。


众所周知,各个终端默认的配置都十分简陋。无论是 Windows 的 Powershell,还是 Linux 大部分发行版默认的 Bash,亦或是 macOS 预置的 zsh,本身都只提供了路径名和提示符,别无其他。

默认的 Powershell 界面

这对需要频繁使用的机器来说,无论从生产力方面,还是美观度、舒适度方面,都是不大够用的。

我曾经尝试过好多种终端自定义方案,例如我使用 zsh 时,使用 oh-my-zsh 这一集成方案,本身内置了大量主题,但是想对具体主题进行些许适合自己的微调,则并不容易。

我在使用 Bash 时,通过编辑 .bashrc 文件,虽然实现了比较自由的界面设置,但是复杂的代码和难用的 Shell 脚本,想要调整依然不简单。

local EXIT="$?"

local RCol='\[\e[0m\]'
local BRed='\[\e[1;31m\]'
local BGre='\[\e[1;32m\]'
local BBlu='\[\e[1;34m\]'

PS1="${debian_chroot:+($debian_chroot)}\n"
if [ $EXIT != 0 ]; then
    PS1+="[${BRed}$EXIT${RCol}] "
fi
if test -n "$VIRTUAL_ENV"; then
    PS1+="($(basename $VIRTUAL_ENV)) "
fi
PS1+="${BGre}\u@\h${RCol}:${BBlu}\w${RCol}"
PS1+="\n"
PS1+="\\$ ${RCol}"

直到我发现了 Starship

它有什么优势呢?

开箱即用,这是 Starship 最让我惊喜的地方。

安装完 Starship 后,无需进行任何具体自定义的配置,默认就已经提供了非常完整和舒适的终端效果,因此我甚至不需要做什么调整,就可以拿来直接开始用。

Starship 预设主题

Starship 的配置全部放在一个名为 starship.toml 的文件中,类似于:

[git_state]
format = '[\($state( $progress_current of $progress_total)\)]($style) '
cherry_pick = "[🍒 PICKING](bold red)"

官方提供了非常详细的 文档,手把手指导如何配置每一个模块。可配置的模块有好几十个。

还有一点就是,Starship 使用 Rust 编写,对性能的影响很小,在我的低配置 VPS 中也能够快速运行,而不是像其他一些工具,启用之后,每次点击回车出现命令提示符时,都能感受到明显的卡顿。

此外,Starship 非常易于同步。各自安装之后,同一份配置文件可以在不同的操作系统(Windows、Linux、macOS、Android 等)、不同的 Shell(Bash、Zsh、Fish、Powershell 等)中使用,而且展示效果完全一致。非常适合同时使用多个环境、又期望在不同环境中拥有相似体验的人们。

如何安装

主程序

Starship 官方支持了各平台几乎所有常用的包管理器。

如果你使用 Windows,你可以使用 Chocolatey 或者 Scoop:

choco install starship

如果你使用 Linux 或者 macOS,你可以选择 Homebrew 来安装:

brew install starship

启用

要使 Starship 在终端中产生效果,需要在各个终端的配置文件中启用。例如对于 Bash,需要执行:

echo 'eval "$(starship init bash)"' >> ~/.profile

对于 Powershell,可以使用 VS Code 直接编辑:

code $PROFILE

并在打开的文件最后,加入一行:

Invoke-Expression (&starship init powershell)

其他操作系统的安装方法、其他 Shell 的配置方法,可以在官网的 安装指导 中进行查询。

字体

为了显示效果完美呈现,可以在使用终端的系统中安装一个  Nerd Font 字体,用来显示一些图标字符。例如在 Windows 中可以执行:

choco install firacodenf

并在 Windows Terminal 中启用该字体:

在 Windows Terminal 中设置字体

这并不是必须的,取决于在美化方案中是否用到图标字符。

配置文件

创建一个配置文件 ~/.config/starship.toml,就可以在这个文件中自由设置了。

在默认风格的基础上,我们可以随意调整任何细节。例如,我们可以装饰一下提示符(官网示例):

format = """
[┌───────────────────>](bold green)
[│](bold green)$directory$rust$package
[└─>](bold green) """

就会得到这样的效果:

装饰过的提示符

所见即所得。

配置适合自己的风格

Starship 的配置文件以模块化的方式搭建。

显示完整路径名

需要修改当前路径的显示方式时,可以使用 Directory 这个组件:

[directory]
truncate_to_repo=false
truncation_length=0

由于 Starship 默认只展示 3 级目录,且只会显示到 git 根路径。为了显示完整路径名,我加入了上面的两项参数,关闭了这两个默认的功能。

目录调整前后

修改模块标识

如果不想使用前文提到的图标字符,那么可以在配置中修改提示符。例如我这里去掉了 git 分支前面的符号:

[git_branch]
symbol = "branch:"

这样,分支符号就显示成了我在配置文件中设置的 branch: 字符串了。

移除图标字符

增加 IP 地址

通过 Local IP 模块,可以在命令行中显示 IP 地址,这对通过 SSH 连接时非常有用。

[localip]
ssh_only = false
format = "[IP:$localipv4](bold red) "
disabled = false

显示效果:

配置的一般规则

在进行了前面几次尝试之后,对于规则的编写,大概可以有一些经验了。

首先确认需要调整的模块名称。仍以前面显示 IP 地址的模块为例,在文档中可以看到四个配置项:

  • format
  • style
  • ssh_only
  • disabled

其中 disabled 是几乎所有模块都有的一个配置,把它配为 true 则会显示,配为 false 则为隐藏。Starship 的默认配置中,指定了一些模块为 true 而另一些为 false,这可以通过查阅文档的默认值来确定。

format 也是几乎所有模块都有的一个配置,它用来定义这个模块在命令行中如何显示。例如,前面我们给 IP 模块的 format 取值是 "[IP:$localipv4](bold red)",这里 $localipv4 表示变量,会自动替换成相应的内容。所有可以使用的变量,在每个模块的 Variables 中有具体说明。

方括号用来确定一个具体的字符串,和小括号相结合,可以用来指定样式。在前面的例子中,方括号内的 IP:$localipv4 是具体显示的内容(当然这里 $localipv4 会实际显示成真实的 IP 地址,例如 172.16.10.190),而 (bold red) 并不会显示出来,而是用来把前面的 IP:172.16.10.190 部分的样式调整为粗体红色。

style 也是大部分模块都会有的一个配置,可以调整默认的样式。

余下的就是模块自己独有的一些设置了,例如这里的 ssh_only 可以选择是否只是在 ssh 连接时显示 IP 地址。

社区分享的配置

除了基于 Starship 默认的配置进行调整,官方还收录了一些社区分享的配置

这些预设的配置文件中,包括了:

  • 使用图标文字的样式
  • 使用方括号的样式
  • 使用纯文本的样式

以及其他一些预设配置。我们也可以在这些配置的基础上,进行自定义的设置。

配置的同步

设计完自己所需的配置之后,我们只需要把配置文件 ~/.config/starship.toml 复制到另一个设备上,就可以立刻获得几乎完全相同的终端风格了。

关联阅读

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰 

> 实用、好用的 正版软件,少数派为你呈现 🚀