自定义oh-my-zsh主题风格,代码和语法的解释

自定义oh-my-zsh主题风格,代码和语法的解释

摘要:简要介绍.zsh-theme的代码(不涉及函数)

关键词:ohmyzsh zsh-theme语法

https://github.com/ohmyzsh/ohmyzsh/wiki/Themes 官方的主题库
我们可以在~/.oh-my-zsh/themes下面找到对应的主题代码,和官方的主题风格对照着看
https://zsh.sourceforge.io/Intro/intro_14.html#SEC14 部分提示词语法

一、语法介绍

下面解释一下robbyrussell.zsh-theme这个主题的代码

在这里插入图片描述

PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ ) %{$fg[cyan]%}%c%{$reset_color%}"
PROMPT+=' $(git_prompt_info)'

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"

PROMPT="":这是主提示符的设置。它定义了一个包含颜色和文本的字符串,用于显示在终端的最前面,表示当前工作目录和git的分支和仓库状态。具体解释如下:

  • %{$fg_bold[green]%}:这是一个 Zsh 中的提示符替换序列,用于将后面的文本显示为绿色,并加粗。
  • %c:这是一个提示符替换序列,用于显示当前所在的目录路径。
  • %{$fg[cyan]%}:后面的文本显示为青色。
  • %{$reset_color%}:后面的文本颜色恢复为默认颜色,这个很重要,不设置的话可能会导致意想不到的颜色出现,比如使用Tab补全的时候出现了半截绿色
    在这里插入图片描述
  • 但其实我是用%f这个命令替换%{$reset_color%}才解决了半截绿色的问题,不知道为什么

PROMPT+=' $(git_prompt_info)':在上面的主提示符后面添加一个命令替换,用于调用函数 git_prompt_info 并将其输出添加到提示符中。这个函数用于获取当前 Git 仓库的状态信息。后面的4个变量就服务于这个函数,也可以定义其他函数,如ruby_prompt_info等。

ZSH_THEME_GIT_PROMPT_PREFIX="":这是一个 Git 仓库状态前缀的设置,用于显示在 Git 仓库状态信息前面。

ZSH_THEME_GIT_PROMPT_SUFFIX="":这是一个 Git 仓库状态后缀的设置。

ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗":这是一个 Git 仓库状态为 “Dirty”(未提交修改)时的设置。它添加蓝色右括号),然后添加黄色的符号,表示有未提交的修改。

ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})":这是一个 Git 仓库状态为 “Clean”(没有未提交的修改)时的设置,添加蓝色的右括号。

这两个变量只会打印其中之一,也就是当有未提交的修改时会打印ZSH_THEME_GIT_PROMPT_DIRTY的值,否则打印ZSH_THEME_GIT_PROMPT_CLEAN

二、转义字符

注意有些前缀是%,有些是$

系统信息

%n - username
%m - short name of the current host
%M - name of curent host
%# - a % or a #, depending on whether the shell is running as root or not
%~ - relative path
%/ or %d - absolute path
%c or %C - Trailing component of the current working directory.
%t - time 12hr am/pm format
%T - time 24hr format
%w - day and date (day-dd)
%D - Date (default: yy-mm-dd)
%D{%f} - day of the month
%l or %y - The line (tty) the user is logged in on, without /dev/ prefix.

颜色

%F{237} 256 color number
%F{red} 8 color name (black, red, green, yellow, blue, magenta, cyan, white)
$FG[237] (notice the $ sign instead of %) 256 color number
$fg[red] (notice the $ and lower case fg) 8 color name (black, red, green, yellow, blue, magenta, cyan, white)
%{$fg_bold[blue]%} bold variants
%F is Foreground color, $f for resetting foreground color
%K is bacKground color, %k for resetting background-color
$reset_color is a Zsh variable that resets the color of the output
You can use Unicode for symbols
%E Clear to end of the line.
%U (%u) to Start (stop) underline mode.

高级

%{...%} 来表示提示符替换序列。这些序列允许在提示符中插入颜色、样式和其他特殊文本,以实现个性化的终端显示。例如 %{$fg[red]%} 表示将后面的文本显示为红色。
%(condition.true-text.false-text) 来进行条件判断,并在满足条件时显示 true-text,不满足条件时显示 false-text
%? 来获取上一个命令的退出状态码,并根据退出状态码进行条件判断。例如 %{$fg_bold[red]%}%(?..[%?]) 可以在上一个命令返回非零状态码时显示状态码,否则不显示。
%F{code}%f 来设置异步命令的前景色。可以使用它们来在命令执行期间改变命令输出的颜色。
$underline 表示下划线文本
$blink 表示闪烁文本
%# 可以显示当前 Zsh 会话中已执行的命令数。
%B%> 可以显示一个右提示符,通常用于辅助显示长命令或多行命令输入。
%B%{...%} 来添加颜色和样式到自动补全提示符。
%h 显示当前历史命令
%! 可以显示最近执行的历史命令。
%d 表示目录堆栈的深度,这对于有多个目录切换的情况下很有用。
%{%} 表示宽度适应,当终端窗口变窄时,可以隐藏长路径等。
\\ 表示插入逃逸字符,从而显示特殊字符,例如 $% 等,这个逃逸字符我试了但没有效果
$(date) 表示插入当前日期。
$variable_name 表示变量。例如 $PROMPT 表示一个保存主提示符的变量。
\n 表示换行
\t 表示制表符(Tab)

参考

自定义一个oh-my-zsh 主题

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
oh-my-zsh 是一个开源的、社区驱动的 zsh 配置管理框架,它提供了一系列的插件、主题自定义选项,使得用户可以轻松地定制和管理自己的 zsh 终端环境。它旨在提供一个更强大、更易用的终端工具。 而 oh-my-zsh-git 是 oh-my-zsh 在 GitHub 上的一个 fork 版本,它基于原版的 oh-my-zsh,对其进行了一些修改和扩展。oh-my-zsh-git 主要的目的是为了扩展和增强原版 oh-my-zsh 的功能,并从社区中收集和整合更多的插件和主题。 具体来说,oh-my-zsh-git 与 oh-my-zsh 的区别主要体现在以下几个方面: 1. 功能扩展:oh-my-zsh-git 在原版 oh-my-zsh 的基础上增加了一些功能和工具,使得终端使用起来更加方便和高效。 2. 插件和主题oh-my-zsh-git 提供了更多的插件和主题选项,且会持续更新和增加。用户可以根据自己的需求选择和使用不同的插件和主题。 3. 扩展性:oh-my-zsh-git 更加注重可扩展性,用户可以自定义添加新的插件和主题,或者根据自己的需要修改现有的插件和主题。 4. 社区支持:oh-my-zsh-git 的社区活跃度较高,用户能够得到更多的帮助和支持,同时也能够贡献自己的代码和改进。 综上所述,oh-my-zsh-git 是在 oh-my-zsh 基础上进行的一些改进和扩展,提供了更多的插件和主题选项,同时注重用户的自定义和扩展能力。用户可以根据自己的需求选择采用哪个版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值