打造现代化终端工作流:Zellij + Starship 完整配置
告别枯燥的黑白终端,用 Zellij 多路复用 + Starship 美化提示符,打造高效、好看的开发环境。Windows 和 macOS 双平台适配。
适用平台: Windows 10/11 · macOS
配色方案: Catppuccin Mocha
工具介绍
Zellij 是用 Rust 编写的现代终端多路复用器,可以在一个窗口内管理多个窗格和标签,断开连接后会话依然保留。相比 tmux,学习曲线更低,界面底部自带快捷键提示。
Starship 是跨 shell 的极速命令行提示符,支持 PowerShell、zsh、fish 等,可以显示 git 分支、语言版本、执行时长等信息,高度可定制。
本文使用 Catppuccin Mocha 配色方案,粉橙黄渐变风格,在深色终端背景下效果极佳。
安装 Zellij
Windows
Windows 从 Zellij 0.44.0 开始原生支持,直接下载二进制即可。
第一步:下载并解压
Invoke-WebRequest -Uri "https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-pc-windows-msvc.zip" -OutFile "$env:USERPROFILE\zellij.zip"
Expand-Archive "$env:USERPROFILE\zellij.zip" -DestinationPath "C:\Tools\zellij" -Force
第二步:添加到系统 PATH
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path","Machine") + ";C:\Tools\zellij", [EnvironmentVariableTarget]::Machine)
$env:Path = [Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [Environment]::GetEnvironmentVariable("Path","User")
第三步:配置默认 shell
mkdir "$env:USERPROFILE\.config\zellij" -Force
'default_shell "powershell.exe"' | Out-File "$env:USERPROFILE\.config\zellij\config.kdl" -Encoding UTF8
第四步:验证安装
zellij --version
macOS
macOS 推荐使用 Homebrew 安装,最为简便。
第一步:安装
brew install zellij
第二步:配置默认 shell
mkdir -p ~/.config/zellij
echo 'default_shell "/bin/zsh"' > ~/.config/zellij/config.kdl
第三步:验证安装
zellij --version
💡 也可以不安装直接试用:
bash <(curl -L https://zellij.dev/launch)
安装 Starship
Windows
第一步:下载并安装
Invoke-WebRequest -Uri "https://github.com/starship/starship/releases/latest/download/starship-x86_64-pc-windows-msvc.zip" -OutFile "$env:USERPROFILE\starship.zip"
Expand-Archive "$env:USERPROFILE\starship.zip" -DestinationPath "C:\Tools\starship" -Force
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path","Machine") + ";C:\Tools\starship", [EnvironmentVariableTarget]::Machine)
第二步:配置 PowerShell 自动加载
if (!(Test-Path $PROFILE)) { New-Item $PROFILE -Force }
Add-Content $PROFILE "`nInvoke-Expression (&starship init powershell)"
macOS
第一步:安装
brew install starship
第二步:配置 zsh 自动加载
在 ~/.zshrc 末尾加入:
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
source ~/.zshrc
应用 Starship 配置
本文使用 Catppuccin Mocha 主题配置,效果为粉橙黄渐变提示符,并在右侧显示当前目录的语言版本(Node.js、Java、Python、Rust 等)。
Windows
mkdir "$env:USERPROFILE\.config" -Force
notepad "$env:USERPROFILE\.config\starship.toml"
将配置内容粘贴进去保存,然后设置环境变量:
[Environment]::SetEnvironmentVariable("STARSHIP_CONFIG", "$env:USERPROFILE\.config\starship.toml", [EnvironmentVariableTarget]::User)
macOS
mkdir -p ~/.config
nano ~/.config/starship.toml
💡 macOS 上
STARSHIP_CONFIG默认指向~/.config/starship.toml,无需额外设置环境变量。
配置文件内容
将以下内容完整粘贴到 starship.toml:
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[](red)\
$os\
$username\
[](bg:peach fg:red)\
$directory\
[](bg:yellow fg:peach)\
$git_branch\
$git_status\
[ ](fg:yellow)\
$cmd_duration\
$line_break\
$character"""
right_format = """
$conda\
$nodejs\
$python\
$java\
$rust\
$golang"""
palette = 'catppuccin_mocha'
[os]
disabled = false
style = "bg:red fg:crust"
[os.symbols]
Windows = ""
Ubuntu = ""
SUSE = ""
Raspbian = ""
Mint = ""
Macos = ""
Manjaro = ""
Linux = ""
Gentoo = ""
Fedora = ""
Alpine = ""
Amazon = ""
Android = ""
AOSC = ""
Arch = ""
Artix = ""
CentOS = ""
Debian = ""
Redhat = ""
RedHatEnterprise = ""
[username]
show_always = true
style_user = "bg:red fg:crust"
style_root = "bg:red fg:crust"
format = '[ $user]($style)'
[directory]
style = "bg:peach fg:crust"
format = "[ $path ]($style)"
truncation_length = 0
truncate_to_repo = false
[directory.substitutions]
"Documents" = " "
"Downloads" = " "
"Music" = " "
"Pictures" = " "
"Developer" = " "
[git_branch]
symbol = ""
style = "bg:yellow"
format = '[[ $symbol $branch ](fg:crust bg:yellow)]($style)'
[git_status]
style = "bg:yellow"
format = '[[($all_status$ahead_behind )](fg:crust bg:yellow)]($style)'
[nodejs]
symbol = ""
style = "bg:green"
format = '[[ $symbol $version ](fg:crust bg:green)]($style)'
[c]
symbol = " "
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[rust]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[golang]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[php]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[java]
symbol = " "
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[kotlin]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[haskell]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[python]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)'
[docker_context]
symbol = ""
style = "bg:sapphire"
format = '[[ $symbol( $context) ](fg:crust bg:sapphire)]($style)'
[conda]
symbol = " "
style = "sapphire"
format = '[$symbol$environment]($style)'
ignore_base = false
[time]
disabled = true
[line_break]
disabled = false
[character]
disabled = false
success_symbol = '[❯](bold fg:green)'
error_symbol = '[❯](bold fg:red)'
vimcmd_symbol = '[❮](bold fg:green)'
vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
vimcmd_replace_symbol = '[❮](bold fg:lavender)'
vimcmd_visual_symbol = '[❮](bold fg:yellow)'
[cmd_duration]
show_milliseconds = true
format = " in $duration "
style = "bg:lavender"
disabled = false
show_notifications = true
min_time_to_notify = 45000
[palettes.catppuccin_mocha]
rosewater = "#f5e0dc"
flamingo = "#f2cdcd"
pink = "#f5c2e7"
mauve = "#cba6f7"
red = "#f38ba8"
maroon = "#eba0ac"
peach = "#fab387"
yellow = "#f9e2af"
green = "#a6e3a1"
teal = "#94e2d5"
sky = "#89dceb"
sapphire = "#74c7ec"
blue = "#89b4fa"
lavender = "#b4befe"
text = "#cdd6f4"
subtext1 = "#bac2de"
subtext0 = "#a6adc8"
overlay2 = "#9399b2"
overlay1 = "#7f849c"
overlay0 = "#6c7086"
surface2 = "#585b70"
surface1 = "#45475a"
surface0 = "#313244"
base = "#1e1e2e"
mantle = "#181825"
crust = "#11111b"
[palettes.catppuccin_frappe]
rosewater = "#f2d5cf"
flamingo = "#eebebe"
pink = "#f4b8e4"
mauve = "#ca9ee6"
red = "#e78284"
maroon = "#ea999c"
peach = "#ef9f76"
yellow = "#e5c890"
green = "#a6d189"
teal = "#81c8be"
sky = "#99d1db"
sapphire = "#85c1dc"
blue = "#8caaee"
lavender = "#babbf1"
text = "#c6d0f5"
subtext1 = "#b5bfe2"
subtext0 = "#a5adce"
overlay2 = "#949cbb"
overlay1 = "#838ba7"
overlay0 = "#737994"
surface2 = "#626880"
surface1 = "#51576d"
surface0 = "#414559"
base = "#303446"
mantle = "#292c3c"
crust = "#232634"
[palettes.catppuccin_latte]
rosewater = "#dc8a78"
flamingo = "#dd7878"
pink = "#ea76cb"
mauve = "#8839ef"
red = "#d20f39"
maroon = "#e64553"
peach = "#fe640b"
yellow = "#df8e1d"
green = "#40a02b"
teal = "#179299"
sky = "#04a5e5"
sapphire = "#209fb5"
blue = "#1e66f5"
lavender = "#7287fd"
text = "#4c4f69"
subtext1 = "#5c5f77"
subtext0 = "#6c6f85"
overlay2 = "#7c7f93"
overlay1 = "#8c8fa1"
overlay0 = "#9ca0b0"
surface2 = "#acb0be"
surface1 = "#bcc0cc"
surface0 = "#ccd0da"
base = "#eff1f5"
mantle = "#e6e9ef"
crust = "#dce0e8"
[palettes.catppuccin_macchiato]
rosewater = "#f4dbd6"
flamingo = "#f0c6c6"
pink = "#f5bde6"
mauve = "#c6a0f6"
red = "#ed8796"
maroon = "#ee99a0"
peach = "#f5a97f"
yellow = "#eed49f"
green = "#a6da95"
teal = "#8bd5ca"
sky = "#91d7e3"
sapphire = "#7dc4e4"
blue = "#8aadf4"
lavender = "#b7bdf8"
text = "#cad3f5"
subtext1 = "#b8c0e0"
subtext0 = "#a5adcb"
overlay2 = "#939ab7"
overlay1 = "#8087a2"
overlay0 = "#6e738d"
surface2 = "#5b6078"
surface1 = "#494d64"
surface0 = "#363a4f"
base = "#24273a"
mantle = "#1e2030"
crust = "#181926"安装 Nerd Font 字体
Starship 配置中使用了大量图标,需要安装 Nerd Font 才能正常显示,否则会出现乱码。
Windows
第一步:下载 FiraCode Nerd Font
Invoke-WebRequest -Uri "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/FiraCode.zip" -OutFile "$env:USERPROFILE\FiraCode.zip"
Expand-Archive "$env:USERPROFILE\FiraCode.zip" -DestinationPath "$env:USERPROFILE\FiraCode" -Force
第二步:安装字体
打开解压目录 → 进入 ttf 文件夹 → 全选(Ctrl+A)→ 右键 → 为所有用户安装
第三步:在 Windows Terminal 中设置字体
Ctrl+, 打开设置 → 左侧选 PowerShell → 外观 → 字体改为 FiraCode Nerd Font → 保存
macOS
brew tap homebrew/cask-fonts
brew install --cask font-fira-code-nerd-font
安装后在 iTerm2 中设置:Preferences → Profiles → Text → Font → 选择 FiraCode Nerd Font
配置自动启动
让打开终端时自动进入 Zellij,Zellij 内的每个窗格都运行配置好的 shell + Starship。
Windows Terminal
打开设置 → 左下角「打开 JSON 文件」,找到 PowerShell 配置块,加入 commandline:
{
"name": "Windows PowerShell",
"commandline": "powershell.exe -NoExit -Command \"zellij\"",
"guid": "...",
"hidden": false
}
macOS(zsh)
在 ~/.zshrc 末尾加入以下代码:
# 自动启动 zellij(仅在非 zellij 环境中,避免嵌套)
if [[ -z "$ZELLIJ" ]]; then
zellij
fi
Tabby
在 config.yaml 的 profiles: 列表中添加:
- type: local
name: PowerShell
icon: fas fa-terminal
options:
command: powershell.exe
args:
- -NoExit
- -Command
- zellij
id: local:powershell
💡 Tabby 配置文件路径:
C:\Users\{用户名}\AppData\Roaming\tabby\config.yaml
常用快捷键速查
Zellij 界面底部会实时显示当前模式的快捷键,不用死记。
整套配置完成后:打开终端 → 自动进入 Zellij → 每个窗格都有 Starship 美化提示符,开发体验大幅提升。