4个版本 (破坏性更新)
0.4.0 | 2024年1月22日 |
---|---|
0.3.0 | 2022年9月20日 |
0.2.0 | 2020年11月12日 |
0.1.0 | 2020年9月7日 |
#10 在 #shell-prompt
63KB
1.5K SLoC
概述
CLI生成shell提示符。
字体
默认提示符配置使用来自Nerd Fonts的符号,并期望安装其中之一。
Shell支持
仅支持zsh。如果需要支持其他shell,请提交一个issue。
安装
cargo install eliprompt
确保eliprompt
在你的PATH
中,并将以下内容添加到.zshrc
eval "$(eliprompt install --shell zsh)"
配置
提示符由块组成。每个块包含要显示的文本以及样式(前景色和背景色)。
配置存储在~/.config/eliprompt/config.json
中。它由一个类型为Config
的JSON对象组成。Config
和其他涉及的JSON类型在下面详细说明。
BlockProducer
类型
具有单个字段的JSON对象,字段名称与其类型相同,包括以下类型:
Elapsed
ExitCode
GitHead
GitPath
Hostname
WorkingDirectory
Username
Newline
Space
Text
ExitStatusSymbol
或
Sequence
Separated
Styled
Color
类型
带有CSS颜色名称的字符串(例如 "red"
)或CSS sRGB颜色(例如 "#ff1000"
)。
Config
类型
根配置对象。具有以下字段的JSON对象
prompt
[可选]- 类型:
BlockProducer
- 提示定义。
- 类型:
alternative_prompt
[可选]- 类型:
BlockProducer
或null
- 当
$TERM
为linux
或环境变量ELIPROMPT_ALTERNATIVE_PROMPT
被定义时,使用此替代提示定义。
- 类型:
timeout
[可选]- 类型:
Duration
- 构建提示符分配的最大时间。如果用时更长,将显示默认提示符。
- 类型:
Duration
类型
包含单位的时间字符串,例如 "3s"
表示 3 秒。
Elapsed
类型
显示上一个命令的持续时间。JSON对象包含以下字段
style
[可选]- 类型:
Style
- 类型:
prefix
[可选]- 类型:
String
- 显示持续时间之前的文本。
- 类型:
threshold
[可选]- 类型:
Duration
- 只有当命令的持续时间超过阈值时,才会显示持续时间。
- 类型:
ExitCode
类型
如果上一个命令的退出码不是零,则显示退出码。JSON对象包含以下字段
style
[可选]- 类型:
Style
- 类型:
prefix
[可选]- 类型:
String
- 显示退出码之前的文本。
- 类型:
ExitStatusSymbol
类型
GitHead
类型
显示当前 git 分支。JSON对象包含以下字段
style
[可选]- 类型:
Style
- 类型:
prefix
[可选]- 类型:
String
- 显示 git 分支之前的文本。
- 类型:
GitPath
类型
如果当前工作目录位于 git 仓库中,则相对于仓库根目录显示。JSON对象包含以下字段
style
[可选]- 类型:
Style
- 类型:
prefix
[可选]- 类型:
String
- 显示路径之前的文本。
- 类型:
Hostname
类型
style
[可选]- 类型:
Style
- 类型:
prefix
[可选]- 类型:
String
- 显示主机名之前的文本。
- 类型:
Newline
类型
添加换行符。
Or
类型
包含 BlockProducer
项的列表。从第一个至少产生一个块的生成器返回块。
Separated
类型
separator_style
[可选]- 类型:
Style
- 用于分隔符的样式。
- 类型:
separator
[可选]- 类型:
String
- 在生成器产生的块组之间插入的分隔符。
- 类型:
生成器
:- 类型:包含
BlockProducer
项的列表
- 类型:包含
Sequence
类型
包含 BlockProducer
项的列表。从所有生成器返回块。
Space
类型
添加空格字符。
Style
类型
包含以下字段的 JSON 对象
Styled
类型
style
[可选]- 类型:
Style
- 未指定前景或背景颜色的项的默认样式。
- 类型:
生成器
:- 类型:
BlockProducer
- 应用于默认样式的块的生成器。
- 类型:
Text
类型
style
[可选]- 类型:
Style
- 类型:
内容
:- 类型:
String
- 类型:
Username
类型
style
[可选]- 类型:
Style
- 类型:
prefix
[可选]- 类型:
String
- 显示用户名之前的文本。
- 类型:
WorkingDirectory
类型
显示当前工作目录。JSON对象包含以下字段
style
[可选]- 类型:
Style
- 类型:
home_as_tilde
[可选]- 类型:
bool
- 指示是否将主目录显示为波浪线。
- 类型:
prefix
[可选]- 类型:
String
- 显示工作目录之前的文本。
- 类型:
示例
{
"prompt": {
"Styled": {
"style": {
"foreground": "teal",
"background": "black"
},
"producer": {
"Sequence": [
{
"Separated": {
"separator_style": {},
"separator": " | ",
"producers": [
{
"Separated": {
"separator_style": {},
"separator": "@",
"producers": [
{
"Username": {
"style": {},
"prefix": ""
}
},
{
"Hostname": {
"style": {},
"prefix": ""
}
}
]
}
},
{
"Or": [
{
"GitPath": {
"style": {},
"prefix": ""
}
},
{
"WorkingDirectory": {
"style": {},
"home_as_tilde": true,
"prefix": ""
}
}
]
},
{
"GitHead": {
"style": {},
"prefix": ""
}
},
{
"Elapsed": {
"style": {},
"prefix": "祥",
"threshold": "2s"
}
},
{
"ExitCode": {
"style": {
"foreground": "crimson"
},
"prefix": ""
}
}
]
}
},
{
"Newline": null
},
{
"ExitStatusSymbol": {
"style": {
"foreground": "dodgerblue"
},
"error_style": {
"foreground": "crimson"
},
"contents": "→"
}
},
{
"Space": null
}
]
}
}
},
"alternative_prompt": {
"Styled": {
"style": {
"foreground": "teal"
},
"producer": {
"Sequence": [
{
"Separated": {
"separator_style": {},
"separator": " | ",
"producers": [
{
"Separated": {
"separator_style": {},
"separator": "@",
"producers": [
{
"Username": {
"style": {},
"prefix": ""
}
},
{
"Hostname": {
"style": {},
"prefix": ""
}
}
]
}
},
{
"WorkingDirectory": {
"style": {},
"home_as_tilde": true,
"prefix": ""
}
},
{
"Elapsed": {
"style": {},
"prefix": "",
"threshold": "2s"
}
},
{
"ExitCode": {
"style": {
"foreground": "crimson"
},
"prefix": ""
}
}
]
}
},
{
"Newline": null
},
{
"ExitStatusSymbol": {
"style": {
"foreground": "dodgerblue"
},
"error_style": {
"foreground": "crimson"
},
"contents": "→"
}
},
{
"Space": null
}
]
}
}
},
"timeout": "1s"
}
贡献
所有贡献都必须在 MIT 许可证 下许可。
相关项目
starship 提供更多块并支持更多 shell。
依赖项
~12–24MB
~383K SLoC