Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
众所周知,各个终端默认的配置都十分简陋。无论是 Windows 的 Powershell,还是 Linux 大部分发行版默认的 Bash,亦或是 macOS 预置的 zsh,本身都只提供了路径名和提示符,别无其他。
这对需要频繁使用的机器来说,无论从生产力方面,还是美观度、舒适度方面,都是不大够用的。
我曾经尝试过好多种终端自定义方案,例如我使用 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.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 中启用该字体:
这并不是必须的,取决于在美化方案中是否用到图标字符。
配置文件
创建一个配置文件 ~/.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 客户端、关注 少数派公众号,解锁全新阅读体验 📰
> 实用、好用的 正版软件,少数派为你呈现 🚀