跳至内容
liuzhen932 的小窝
返回

记一次 Starship 折腾日记

0x01 Starship 是什么

Starship 是一个轻量、快速且高度可定制的终端提示符工具,适用于所有主流 Shell(如 Bash、Zsh、PowerShell)和操作系统(Windows、macOS、Linux 等)。它通过动态显示 Git 仓库状态、系统信息、环境变量等实用数据,结合图标和个性化配色,帮助用户打造美观且功能丰富的终端界面。其核心特点包括:轻量快速、高度可定制、跨平台兼容,以及对 Nerd Fonts 的支持(如 Fira Code Nerd Font,可显示精美图标)。它通过简洁的配置文件实现个性化设置,同时提供预设配置方案供用户参考。

我习惯在 Windows 上开发(使用 PowerShell)并在 Debian 12/13 上测试项目(使用 Bash,自定义配置),我之前尝试过 Oh-My-Posh 项目,但是效果一言难尽,每次开终端能卡七八秒,回车后也不流畅卡卡卡卡卡卡,有时候 Ctrl + C 还有可能卡出去(已红温)。

0x02 折腾的前期准备

如果你想要开始折腾,请考虑拥有以下设备:

  1. 一个能正常工作的终端(PowerShell 或者 Bash 或者 Zsh 均可)
  2. 您的终端能通过您的运营商连接到互联网
  3. 您能熟练使用记事本(在 Windows 环境下)或 nano/Vim(在 Linux 环境下)
👉 点击展开查看本文字体特殊配置

为避免阅读下文时出现方框乱码字符,建议您在浏览器中按 F12 打开开发者工具,在控制台中执行以下脚本。脚本将自动加载所需字体,确保内容显示完整美观。

(function () {
  const style = document.createElement("style");
  style.textContent = `
  @font-face {
    font-family: 'FiraCode Nerd Font Mono Reg';
    src: url('https://cdn.jsdelivr.net/gh/ryanoasis/nerd-fonts@master/patched-fonts/FiraCode/Regular/FiraCodeNerdFontMono-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
  }
  .expressive-code pre > code {
    font-family: 'FiraCode Nerd Font Mono Reg', ui-monospace !important;
  }
`;
  document.head.appendChild(style);
})();

0x03 安装 Starship

在 Linux 上,你可以使用这个一键脚本进行安装:

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

而在 Windows 上,我推荐你使用 winget 进行安装:

winget install --id Starship.Starship

如果你在 Termux 上折腾,请使用如下命令安装:

pkg install starship

如果你的机器比较特殊(或者用上述方法安装失败了),你仍然可以使用 cargo 安装(前提是你安装了 Rust):

cargo install starship --locked

如果你按以上步骤成功安装了,那么接下来你需要为你的终端配置使用 Starship,这可以通过这些方法实现:

Bash

~/.bashrc 的最后,添加以下内容:

# ~/.bashrc

eval "$(starship init bash)"

Zsh

~/.zshrc 的最后,添加以下内容:

# ~/.zshrc

eval "$(starship init zsh)"

PowerShell

将以下内容添加到 Microsoft.PowerShell_profile.ps1。你可以在 PowerShell 通过 $PROFILE 变量来查询文件的位置。对于 -Nix 来说,通常文件路径是 ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1~/.config/powershell/Microsoft.PowerShell_profile.ps1

Invoke-Expression (&starship init powershell)

Cmd

您需要使用 Clink (v1.2.30+) 与 Cmd. 将以下文件添加到文件 starship.lua 中,并将此文件放置在 Clink 脚本目录中:

-- starship.lua

load(io.popen('starship init cmd'):read("*a"))()

0x04 配置 Starship

创建配置文件

为 Starship 创建配置文件 ~/.config/starship.toml

mkdir -p ~/.config && touch ~/.config/starship.toml

Starship 的所有配置都在这样一个 TOML 文件内:

# 为 IDE 提供 schema 实现自动补全
"$schema" = 'https://starship.rs/config-schema.json'

# 在提示符之间插入空行
add_newline = true

# 将提示符中的 '❯' 替换为 '$'
[character] # 此组件名称为 'character'
success_symbol = '[\$](bold green)'

# 禁用 'package' 组件,将其隐藏
[package]
disabled = true

设置配置文件路径

我们可以使用 STARSHIP_CONFIG 环境变量更改默认配置文件的位置:

export STARSHIP_CONFIG=~/non-default-path/starship.toml

在 PowerShell (Windows) 中,在 $PROFILE 中添加下面的代码行能达到同样的效果:

$ENV:STARSHIP_CONFIG = "$HOME\non-default-path\starship.toml"

更多的内容可以参考官方文档,这里不再赘述。

开始定制!

参考官方文档,我将修改提示符:

format = """
$username\
$hostname\
$localip\
...
$cmd_duration\
$line_break\
$character"""

# 右侧提示符,下文会提到
right_format = """
$battery\
$time\
"""

# 在提示符之间插入空行
add_newline = true

# 指示超时时间,避免大部分情况下出现的警告
command_timeout = 1000

# Disable the package module, hiding it from the prompt completely
[package]
disabled = true

# Replace the '❯' symbol in the prompt with '$'
[character]
success_symbol = '[\$](bold white)'
error_symbol = '[\$](bold red)'
vimcmd_symbol = '[\$](bold green)'
vimcmd_replace_one_symbol = '[\$](bold purple)'
vimcmd_replace_symbol = '[\$](bold purple)'
vimcmd_visual_symbol = '[\$](bold yellow)'

这样其实已经很接近我想要的效果了,但是我不喜欢中间的一堆 atvia,所以我们需要单独配置每一个并为其修改展示格式 format

# 有方框不要紧,使用字体设置为 Fira Code Nerd Font 的记事本复制粘贴就能看到!
[directory]
format = '[$path]($style)[$read_only]($read_only_style) '
style = 'bold green'
read_only = " 󰌾"

[hostname]
ssh_only = false
disabled = false
style = 'bold cyan'
ssh_symbol = ""

[username]
disabled = false
show_always = true
style_user = 'bold blue'
format = '[$user]($style) @ '

[git_branch]
format = '[$symbol$branch]($style) '
symbol = ""

[git_status]
format = '([$all_status$ahead_behind]($style))'

[git_commit]
tag_symbol = ''

很棒!我们接下来启用一些默认不启用的组件并配置他们:

[[battery.display]]
threshold = 10 # 电量 10%~90%
style = 'bold red'

[[battery.display]]
threshold = 90 # 电量 90%+
style = 'bold green'
charging_symbol = '⚡️ ' # 正在充电
discharging_symbol = '💦 ' # 正在放电

[memory_usage]
disabled = false # 取消默认的禁用
threshold = 70 # 内存占用高于 70% 启用
format = '$symbol[${ram}/${ram_pct}( | ${swap}/${swap_pct})]($style) ' # 同时显示 物理内存 + 占用 和 虚拟内存 + 占用
symbol = '󰍛 '
style = 'dimmed white'

[cmd_duration]
min_time = 500 # 单位毫秒
format = 'took [$duration]($style)'
show_milliseconds = true # 显示为 114s514ms

[time]
disabled = false
format = '🕙 [$time]($style) '
time_format = '%T'

恭喜你,你获得了一个相当好看的(我是这么认为的)终端,快去向朋友炫耀吧~

如果你想抄作业请移步至我们的 liuzhen932/dotfiles,那里有全套的配置方便你快速上手。

0x05 附录与参考资料

Starship

Nerd Font

Nerd Fonts 通过修改开发者常用的字体,为其添加了大量符号和图标,尤其是从 Font Awesome、Devicons、Octicons 等流行图标库中整合的符号。

nano

nano 是 Unix 系统中一款轻量级、易用的命令行文本编辑器,界面直观无模式切换,适合新手快速编辑文件,通过底部菜单栏的快捷键完成保存、退出等操作。

                :::                           The
  iLE88Dj.  :jD88888Dj:
.LGitE888D.f8GjjjL8888E;        .d8888b.  888b    888 888     888
iE   :8888Et.     .G8888.      d88P  Y88b 8888b   888 888     888
;i    E888,        ,8888,      888    888 88888b  888 888     888
      D888,        :8888:      888        888Y88b 888 888     888
      D888,        :8888:      888  88888 888 Y88b888 888     888
      D888,        :8888:      888    888 888  Y88888 888     888
      D888,        :8888:      Y88b  d88P 888   Y8888 Y88b. .d88P
      888W,        :8888:       "Y8888P88 888    Y888  "Y88888P"
      W88W,        :8888:
      W88W:        :8888:      88888b.   8888b.  88888b.   .d88b.
      DGGD:        :8888:      888 "88b     "88b 888 "88b d88""88b
                   :8888:      888  888 .d888888 888  888 888  888
                   :W888:      888  888 888  888 888  888 Y88..88P
                   :8888:      888  888 "Y888888 888  888  "Y88P"
                    E888i
                    tW88D             Text Editor Homepage

Vim

Vim 是一款基于命令行的高效、轻量级文本编辑器,由 Bram Moolenaar 开发,是经典编辑器 Vi 的扩展版本。它通过独特的模式化操作实现高效编辑,用户通过组合按键而非鼠标快速完成导航、修改、搜索等操作。Vim 支持高度定制化配置,可在 Linux、macOS、Windows 等平台运行,尤其适合开发者和需要频繁处理代码或文本的用户。

开发常用的 Vim 命令快捷键速查表

总结

那么本篇文章就到这里,有任何问题或者展示你的炫酷终端欢迎留言讨论,期待和你共同进步!(话说字符画真的占字数啊,一下子文章就多了两千字符)


分享这篇文章:

上一篇
记一次 QQ 邮箱「他域互通」折腾日记
下一篇
利用 Vector 将 Caddy 日志馈送至 OpenObserve

人机验证:请刷新页面以加载评论区