azhuchkov/cobalt-spark
GitHub: azhuchkov/cobalt-spark
一款紧凑的 Oh My Zsh 主题,通过克制配色与醒目闪电锚点提升终端命令行的视觉清晰度与信息可读性。
Stars: 9 | Forks: 0
# Cobalt Spark
一款紧凑的 Oh My Zsh 主题,采用克制的配色以避免与常见的命令输出(例如 `ls` 列表)产生视觉冲突。醒目的闪电锚点使得在浏览屏幕时能轻松找到命令行,并在视觉上将左侧的上下文与右侧的命令分隔开来。
**实验性功能:** 该主题还遵循 [Zsh 插件标准](https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html),并可通过其[独立入口点](#standalone-mode-experimental)在不使用 Oh My Zsh 的情况下运行。
作为对比,请查看[使用 `robbyrussell` 主题渲染的相同终端会话](https://github.com/user-attachments/assets/4fb99803-1190-4559-811c-4be0e91b82d0)。
提示符包含当前目录的父目录、重要的 Git 状态(例如分支、分离的 `HEAD`、工作区更改以及未推送的提交),以及通过 `virtualenv` 插件显示的 Python 虚拟环境。它还会在存在嵌套 shell 和后台任务时进行指示。
该主题还支持用于复制当前工作目录的可选快捷键。
## 安装
将仓库克隆到 Oh My Zsh 的自定义主题目录中:
```
git clone https://github.com/azhuchkov/cobalt-spark.git \
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/cobalt-spark"
```
然后在 `~/.zshrc` 中选择该主题:
```
ZSH_THEME="cobalt-spark/cobalt-spark"
```
要使用 Oh My Zsh 的随机主题选择功能将其与另一个主题进行对比:
```
ZSH_THEME="random"
ZSH_THEME_RANDOM_CANDIDATES=(
"cobalt-spark/cobalt-spark"
"robbyrussell"
)
```
要显示当前激活的 Python 环境,请将 Oh My Zsh 的 `virtualenv` 插件添加到 `~/.zshrc` 中现有的插件列表中,例如:
```
plugins=(git virtualenv)
```
## 独立模式(实验性)
在 Oh My Zsh 之外,可以通过插件管理器或直接从 Zsh 加载该主题。
要使用插件管理器(例如 Zinit、Antidote 或 Antigen)加载它,请按照管理器的插件安装文档添加 `azhuchkov/cobalt-spark`。支持常见 Zsh 插件规范的管理器会自动发现并加载该主题。
要在不使用管理器的情况下加载它,请将其克隆到任何方便的位置:
```
git clone https://github.com/azhuchkov/cobalt-spark.git ~/.cobalt-spark
```
然后在 `~/.zshrc` 中引入标准的插件入口点:
```
source ~/.cobalt-spark/cobalt-spark.plugin.zsh
```
## 可选设置
您可以选择[绑定](https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins)一个快捷键来快速复制当前工作目录:
```
# 按 Ctrl+X,然后按 Ctrl+P 复制 CWD
bindkey -M emacs '^X^P' cobalt-spark-copy-cwd
```
为了与其他插件保持最佳兼容性,请将此绑定放置在 `~/.zshrc` 的末尾附近。
## 配置
- 在加载主题之前设置 `COBALT_SPARK_THEME_PROMPT_SIGN` 以使用不同的提示符锚点,例如 `COBALT_SPARK_THEME_PROMPT_SIGN=' % '`。
- `COBALT_SPARK_THEME_PARENT_CAP` 控制在缩写父目录名称时保留前几个字符。将其设置为 `0` 可以完全隐藏父目录。
## 推荐设置
使用深色终端配色方案,例如 [Tokyo Night](https://github.com/tokyo-night/tokyo-night-vscode-theme#other-ports)(用于截图中)、[Catppuccin Macchiato](https://catppuccin.com/ports/?c=terminal) 或 [One Dark](https://github.com/nathanbuchar/atom-one-dark-terminal)——后者特别适合长时间使用终端。
使用包含闪电符号(`⚡`)的字体。大多数 [Nerd Fonts](https://www.nerdfonts.com/) 都可以;推荐使用 [JetBrains Mono Nerd Font Complete v2.3.3](https://github.com/ryanoasis/nerd-fonts/releases/download/v2.3.3/JetBrainsMono.zip)。
## 使用技巧
### 命令纠正
要让 Zsh 为拼写错误的命令名建议纠正,请启用 [`CORRECT`](https://zsh.sourceforge.io/Doc/Release/Options.html#index-CORRECT):
```
setopt CORRECT
```
### 命令计时
[`REPORTTIME`](https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-REPORTTIME) 会让 Zsh 在命令消耗的 CPU 时间超过指定的秒数后,自动显示计时摘要。CPU 时间计算的是实际工作的时间,不包括等待输入或网络所花费的时间。
[`TIMEFMT`](https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-TIMEFMT) 控制摘要的显示内容;此示例显示了运行时间、CPU 使用率和命令。它还控制 Zsh 的 `time` 关键字的输出:
```
REPORTTIME=3
TIMEFMT="${(%):-%F{8\}}◷ ${(%):-%F{14\}}%*Es ${(%):-%F{8\}}· ${(%):-%F{11\}}%P${(%):-%F{8\}} CPU · ${(%):-%f}%J"
```
## 故障排除
- 如果提示符号无法正确渲染,请查阅 [Oh My Zsh FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ#font-issues) 获取有关字体问题的帮助。您还可以使用可用的[配置选项](#configuration)来调整提示符号。
- 如果 **iTerm2** 在每个提示符旁边添加了三角形,请在 **Settings → Profiles → Terminal** 下关闭 [**Show mark indicators**](https://iterm2.com/documentation-preferences-profiles-terminal.html),以免其干扰主题的提示符。
- 如果在 `tmux` 中提示符显示了异常偏高的 shell 级别,请将 `set-environment -gu SHLVL` 添加到 `~/.tmux.conf` 中。对于已经在运行的 tmux 服务器,请运行 `tmux set-environment -gu SHLVL`;此修复将应用于新窗格和窗口。
- 如果在 `git status` 显示为干净时,提示符却将仓库标记为已更改,这可能是 Oh My Zsh 计入了被忽略子模块中的提交更改。在当前会话或 Zsh rc 文件中设置 `GIT_STATUS_IGNORE_SUBMODULES=git` 以使其遵循 Git 的策略。
- 如果在大型仓库中 Git 部分显示缓慢,请了解 Git 的 [`core.untrackedCache`](https://git-scm.com/docs/git-update-index#_untracked_cache) 和内置的 [`core.fsmonitor`](https://git-scm.com/docs/git-fsmonitor--daemon)。
- 如果您看到 `zsh-syntax-highlighting: unhandled ZLE widget 'cobalt-spark-copy-cwd'`,请将快捷键的绑定移至 `~/.zshrc` 的末尾,即所有插件加载之后;该警告本身是无害的。
## 许可证
基于 [MIT License](LICENSE) 授权。
作为对比,请查看[使用 `robbyrussell` 主题渲染的相同终端会话](https://github.com/user-attachments/assets/4fb99803-1190-4559-811c-4be0e91b82d0)。
提示符包含当前目录的父目录、重要的 Git 状态(例如分支、分离的 `HEAD`、工作区更改以及未推送的提交),以及通过 `virtualenv` 插件显示的 Python 虚拟环境。它还会在存在嵌套 shell 和后台任务时进行指示。
该主题还支持用于复制当前工作目录的可选快捷键。
## 安装
将仓库克隆到 Oh My Zsh 的自定义主题目录中:
```
git clone https://github.com/azhuchkov/cobalt-spark.git \
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/cobalt-spark"
```
然后在 `~/.zshrc` 中选择该主题:
```
ZSH_THEME="cobalt-spark/cobalt-spark"
```
要使用 Oh My Zsh 的随机主题选择功能将其与另一个主题进行对比:
```
ZSH_THEME="random"
ZSH_THEME_RANDOM_CANDIDATES=(
"cobalt-spark/cobalt-spark"
"robbyrussell"
)
```
要显示当前激活的 Python 环境,请将 Oh My Zsh 的 `virtualenv` 插件添加到 `~/.zshrc` 中现有的插件列表中,例如:
```
plugins=(git virtualenv)
```
## 独立模式(实验性)
在 Oh My Zsh 之外,可以通过插件管理器或直接从 Zsh 加载该主题。
要使用插件管理器(例如 Zinit、Antidote 或 Antigen)加载它,请按照管理器的插件安装文档添加 `azhuchkov/cobalt-spark`。支持常见 Zsh 插件规范的管理器会自动发现并加载该主题。
要在不使用管理器的情况下加载它,请将其克隆到任何方便的位置:
```
git clone https://github.com/azhuchkov/cobalt-spark.git ~/.cobalt-spark
```
然后在 `~/.zshrc` 中引入标准的插件入口点:
```
source ~/.cobalt-spark/cobalt-spark.plugin.zsh
```
## 可选设置
您可以选择[绑定](https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins)一个快捷键来快速复制当前工作目录:
```
# 按 Ctrl+X,然后按 Ctrl+P 复制 CWD
bindkey -M emacs '^X^P' cobalt-spark-copy-cwd
```
为了与其他插件保持最佳兼容性,请将此绑定放置在 `~/.zshrc` 的末尾附近。
## 配置
- 在加载主题之前设置 `COBALT_SPARK_THEME_PROMPT_SIGN` 以使用不同的提示符锚点,例如 `COBALT_SPARK_THEME_PROMPT_SIGN=' % '`。
- `COBALT_SPARK_THEME_PARENT_CAP` 控制在缩写父目录名称时保留前几个字符。将其设置为 `0` 可以完全隐藏父目录。
## 推荐设置
使用深色终端配色方案,例如 [Tokyo Night](https://github.com/tokyo-night/tokyo-night-vscode-theme#other-ports)(用于截图中)、[Catppuccin Macchiato](https://catppuccin.com/ports/?c=terminal) 或 [One Dark](https://github.com/nathanbuchar/atom-one-dark-terminal)——后者特别适合长时间使用终端。
使用包含闪电符号(`⚡`)的字体。大多数 [Nerd Fonts](https://www.nerdfonts.com/) 都可以;推荐使用 [JetBrains Mono Nerd Font Complete v2.3.3](https://github.com/ryanoasis/nerd-fonts/releases/download/v2.3.3/JetBrainsMono.zip)。
## 使用技巧
### 命令纠正
要让 Zsh 为拼写错误的命令名建议纠正,请启用 [`CORRECT`](https://zsh.sourceforge.io/Doc/Release/Options.html#index-CORRECT):
```
setopt CORRECT
```
### 命令计时
[`REPORTTIME`](https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-REPORTTIME) 会让 Zsh 在命令消耗的 CPU 时间超过指定的秒数后,自动显示计时摘要。CPU 时间计算的是实际工作的时间,不包括等待输入或网络所花费的时间。
[`TIMEFMT`](https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-TIMEFMT) 控制摘要的显示内容;此示例显示了运行时间、CPU 使用率和命令。它还控制 Zsh 的 `time` 关键字的输出:
```
REPORTTIME=3
TIMEFMT="${(%):-%F{8\}}◷ ${(%):-%F{14\}}%*Es ${(%):-%F{8\}}· ${(%):-%F{11\}}%P${(%):-%F{8\}} CPU · ${(%):-%f}%J"
```
## 故障排除
- 如果提示符号无法正确渲染,请查阅 [Oh My Zsh FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ#font-issues) 获取有关字体问题的帮助。您还可以使用可用的[配置选项](#configuration)来调整提示符号。
- 如果 **iTerm2** 在每个提示符旁边添加了三角形,请在 **Settings → Profiles → Terminal** 下关闭 [**Show mark indicators**](https://iterm2.com/documentation-preferences-profiles-terminal.html),以免其干扰主题的提示符。
- 如果在 `tmux` 中提示符显示了异常偏高的 shell 级别,请将 `set-environment -gu SHLVL` 添加到 `~/.tmux.conf` 中。对于已经在运行的 tmux 服务器,请运行 `tmux set-environment -gu SHLVL`;此修复将应用于新窗格和窗口。
- 如果在 `git status` 显示为干净时,提示符却将仓库标记为已更改,这可能是 Oh My Zsh 计入了被忽略子模块中的提交更改。在当前会话或 Zsh rc 文件中设置 `GIT_STATUS_IGNORE_SUBMODULES=git` 以使其遵循 Git 的策略。
- 如果在大型仓库中 Git 部分显示缓慢,请了解 Git 的 [`core.untrackedCache`](https://git-scm.com/docs/git-update-index#_untracked_cache) 和内置的 [`core.fsmonitor`](https://git-scm.com/docs/git-fsmonitor--daemon)。
- 如果您看到 `zsh-syntax-highlighting: unhandled ZLE widget 'cobalt-spark-copy-cwd'`,请将快捷键的绑定移至 `~/.zshrc` 的末尾,即所有插件加载之后;该警告本身是无害的。
## 许可证
基于 [MIT License](LICENSE) 授权。标签:Oh My Zsh, SOC Prime, UI设计, Zsh, 开发工具, 终端主题