You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于路径前缀为Starship Prompt的[directory]设置条件化颜色?

在Starship Prompt中复刻路径前缀条件化目录颜色/标识功能

方法1:条件化设置目录颜色

直接修改Starship配置里的directory模块,利用模板语法根据路径前缀切换颜色:

打开你的Starship配置文件(默认路径是~/.config/starship.toml),找到[directory]区块,修改style字段:

[directory]
# 单前缀判断:路径包含/work/projects时用粗体黄色,否则用蓝色
style = "{{ if contains $PWD "/work/projects" }}bold yellow{{ else }}blue{{ end }}"

# 多前缀判断示例:匹配不同前缀用不同颜色
# style = "{{ if contains $PWD "/work/projects" }}bold yellow{{ else if contains $PWD "/private" }}bold red{{ else }}blue{{ end }}"

这里$PWD是Starship内置的当前工作目录变量,contains是模板函数,用于判断路径是否包含指定前缀。你可以替换示例中的路径和颜色样式来适配自己的需求。

方法2:添加自定义标识(类似只读锁)

如果需要像read_only选项那样给特定前缀的目录添加额外标识(比如🔒、🔧),可以通过prefix或suffix字段结合条件实现:

[directory]
style = "blue"
# 路径匹配/private前缀时,在目录名称前添加锁形标识
prefix = "{{ if contains $PWD "/private" }}🔒 {{ else }}""

# 也可以选择在目录名称后添加标识
# suffix = "{{ if contains $PWD "/private" }} 🔒{{ else }}""

方法3:自定义模块(复杂场景适配)

如果上述方法不够灵活,还可以创建自定义模块专门处理路径前缀的条件标识:

  1. 在配置文件中添加自定义模块:
[custom.path_prefix_indicator]
# 用bash命令判断路径前缀,输出对应标识
command = """bash -c 'if [[ "$PWD" == "/work/projects"* ]]; then echo "🔧"; elif [[ "$PWD" == "/private"* ]]; then echo "🔒"; fi'"""
# 标识的显示样式
style = "bold cyan"
# 模块与其他prompt元素的分隔符
prefix = " "
suffix = " "
# 只有当匹配到目标前缀时才显示模块
when = """bash -c '[ -n "$(if [[ "$PWD" == "/work/projects"* ]] || [[ "$PWD" == "/private"* ]]; then echo 1; fi)" ]'"""
  1. 把自定义模块加入到prompt的显示顺序中,找到format字段,将$custom.path_prefix_indicator放在$directory附近的位置:
format = """$custom.path_prefix_indicator$directory$git_branch$git_status..."""

注意事项

  • 颜色样式支持bold、italic等修饰符,颜色可以用名称(如red、blue)或十六进制值(如#ff0000)
  • 修改配置后可以用starship preview命令实时预览效果,无需重启终端

内容的提问来源于stack exchange,提问作者paime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:10:22