惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
MyScale Blog
MyScale Blog
博客园 - Franky
The Cloudflare Blog
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
WordPress大学
WordPress大学
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
The Blog of Author Tim Ferriss
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
aimingoo的专栏
aimingoo的专栏
J
Java Code Geeks
腾讯CDC
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
博客园 - 【当耐特】
美团技术团队
云风的 BLOG
云风的 BLOG

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
在所有终端中使用相同界面,Starship 帮助你自定义命令行 - ...
2022-04-29 · via 少数派

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 客户端、关注 少数派公众号,解锁全新阅读体验 📰 

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