Featured image of post 使用starship定制终端提示符

使用starship定制终端提示符

starship 是使用 Rust 编写的轻量且迅速的终端提示符程序,其功能和作用与 Oh My Zsh 相似,但是相比于 Oh My Zsh,starship 具有以下优点:

  1. starship 是跨平台跨终端的,其支持 Bash、Zsh、Fish 等十几种终端,甚至包括 Windows 的 PowerShell 与 cmd;
  2. 使用编译型语言 Rust 编写的 starship 在运行速度上优于基于 shell script 的 Oh My Zsh;
  3. starship 的自定义配置方法比 Oh My Zsh 简单。

先上图,以下是我所习惯的配置的效果图。除当前用户、hostname 和当前工作路径外,starship 还显示了 git 状态、相关软件的版本、进程的返回码、运行时间、已用内存/虚拟内存和当前时间等信息。starfish 是通过当前工作目录下的文件名判断应当展示哪些模组的,所以当我创建文件之后提示符上也就多出了相关软件的信息。

下文将简述 starship 的安装方法,并给出我的配置文件。

安装

本文仅适用于在 Linux 下的 bash 和 zsh 终端安装 starship,在其它终端的安装方法请参见 starship 的官方文档

首先使用官方脚本在 Linux 系统内安装 starship 程序:

1
$ curl -sS https://starship.rs/install.sh | sh

这时如果在终端输入starship -V能看到 starship 的版本信息,就说明程序安装成功了。

然后需要配置终端程序,使其能使用 starship 作为提示符。在~/.bashrc(bash 终端)或~/.zshrc(zsh 终端)内加入这一行即可:

1
eval "$(starship init bash)"

配置

starship的配置文件是~/.config/starship.toml,你也可以通过设置环境变量STARSHIP_CONFIG改变此文件的位置。在终端输入starship config可以直接打开该文件。

由后缀名可知,starship 的配置文件为 TOML 文件,遵守 TOML 语法,关于 TOML 语法本文就不赘述了,若需要了解详情请移步 TOML 官网

starship 是分模块的结构,starship 生成的提示符中的每一个部分都对应 starship 的一个模块,你可以使用starship explain指令查看各模块的说明及其运行时间,例如以我当前的配置输入该命令后效果如下:

关于如何自定义配置,starship 的官方文档已经写的很完善了,参见 https://starship.rs/zh-CN/config/

starship 在官方文档里已经给出了一些预设,你可以以你喜欢的预设为基础进行定制,例如我的配置就是在 Bracketed Segments 和 Nerd Font Symbols 预设之上按照自己的习惯所做的更改。我的starship.toml如下:

另外,使用 Nerd Font Symbols 需要 Nerd Font,请前往 https://www.nerdfonts.com/font-downloads 下载你习惯的字体对应的图标字体,并在虚拟终端中将其设为默认字体。

相关问题

在使用 Anaconda 管理 Python 的虚拟环境时,Anaconda 会自动在提示符前加上当前虚拟环境的名称,如(base),这与 starship 冲突了(且 starship 的 conda 模块提供了相同的功能),因此需要使用如下指令禁用 Anaconda 的这个功能。

1
$ conda config --set changeps1 False
使用 Hugo 构建
主题 StackJimmy 设计