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

2023-10-30

自定义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 主题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 怎么在edge浏览器下载扩展(插件)

    1 点击浏览器右上角的三个点 找到扩展点进去 2 如果安装过插件 此刻右上角的扩展按钮会弹出安装好的插件信息 如下图 点击 打开Microsoft Edge 加载项 进入微软edge扩展商店 3 没有安装过插件的 会跳到管理扩展界面 如下图
  • 并行程序模拟(ACM/ICPC World Finals 1991)

    附上题目连接 concurrency simulator 本题为紫书数据结构基础篇第一道例题 是一道考察双端队列的模拟题 由于使用了STL 题目的难度和编程量大大降了下来 不过本菜鸟还是花了三个半小时才拿下了这道题 30msAC 可想见代码
  • 创建第一个quick工程

    参考博客 QML入门教程 1 Qt Quick与QML介绍 令狐掌门的博客 CSDN博客 qml教程 控件布局似乎是在main qml中进行实现的 所以在main qml中加入以下代码 import QtQuick 2 15 import
  • 深入理解Solidity——Assert, Require, Revert 和 Exceptions

    Assert Require Revert 和 Exceptions Solidity使用state reverting异常来处理错误 这种异常将回滚当前调用 及其所有子调用 状态的所有变化 并将错误标志给调用者 函数assert和requ
  • QImage的save函数保存的bmp图像无法打开

    最近在VS2010中用QT写一个小的程序 现在出现了一个问题实在不知道怎么解决 用save功能可以得到一个 bmp文件 但是不能读取这个图片的内容 而且每次截图图片的大小都是150K不变 整个调试过程都没有报错 相关代码如下 以上内容设置了
  • Java如何使用JDOM解析XML呢?

    转自 Java如何使用JDOM解析XML呢 下文笔者讲述使用JDOM解析XML的方法分享 如下所示 JDOM简介 JDOM是一个开源项目 它基于树形结构 使用Java代码对XML文档实现解析 生成 序列化及多种操作 JDOM与DOM非常类似
  • 微星主板 新版bios 开启虚拟化

    微星主板新版bios的虚拟化位置比较特别 进入bios开启高级模式 如图cpu configurationn SVM Mode就是虚拟化
  • 基于Jenkins的自动构建系统开发

    1 绪论 1 1 课题的研究背景 随着IT行业的不断发展 软件开发的复杂度也随着不断提高 与此同时 软件的开发团队也越来越庞大 而如何更好地协同整个团队进行高效准确的工作 从而确保软件开发的质量已经慢慢成为了开发过程中不可回避的问题 在软件
  • 中标麒麟离线搭建SVN服务器教程

    中标麒麟离线搭建SVN服务器教程 一 下载相应的包 subversion 1 8 18 tar gz 下载地址 http subversion apache org sqlite autoconf 3190300 tar gz 下载地址 h
  • Python 赋值和copy的区别

    Python 赋值和copy的区别 1 定义 1 1 直接赋值 对象名的引用 相当于起了一个别名 赋值不改变变量的内存地址 仅是对象的简单引用 a和b指向同一片内存区域 改变其中一个 另外一个也会改变 1 2 拷贝copy 划分新的存储地址
  • 【机器学习】Yellowbrick 包的理解和说明

    文章目录 一 介绍 二 Visualizers 2 1 Classification Visualization 2 2 Clustering Visualization 2 3 Feature Visualization 2 4 Mode
  • node.js连接mysql出现错误: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requ

    node js连接mysql出现错误 ER NOT SUPPORTED AUTH MODE Client does not support authentication protocol requested by server consid
  • 数据系统架构-8.任务调度系统

    任务调度系统 序 在有了各种数据统计任务之后 就产生了任务调度需求 我们需要把任务管理起来统一调度 保证任务之间上下游的依赖关系 监控任务运行状态 异常情况下及时告警 尽可能自动化处理异常 调度系统高可用 使每天的数据统计任务按时执行完成
  • Java之反射机制(获取Class对象的三种方式)

    Java之反射机制 获取Class对象的三种方式 开发工具与关键技术 MyEclipse 10 java 作者 刘东标 撰写时间 2019 06 14 如何得到各个字节码对应的实例对象 每个类被加载后 系统会为该类生成对应的 Class对象
  • 英特尔正式宣布于2021年推7奈米制程芯片

    英特尔 Intel 在近日举行的投资人会议上揭露了该公司的产品规画 宣布将于2021年推出7奈米制程芯片 以对抗台积电的5奈米制程产品 今年英特尔力推的Ice Lake微架构仍是基于10奈米制程 宣称预计于6月出货的Ice Lake客户端产
  • 基于卷积神经网络的高光谱分类 CNN+高光谱+印度松数据集

    基于卷积神经网络的高光谱分类 一 研究现状 只考虑到高光谱图像的光谱特征 即 1 提取特征 小波变换 Gabor纹理分析 形态学剖面 2 利用分类方法分类 支持向量机 决策树 随机森林 神经网络 缺点 这些特征提取方法需要依据先验知识手动设
  • 【YOLOv5 数据集划分】训练和验证、训练验证和测试(train、val)(train、val、test)

    YOLOv5 数据集划分 训练和验证 训练验证和测试 train val train val test 在已有测试集的情况下划分训练集和验证集 将图片和标注数据按比例切分为 训练集和测试集 import shutil import rand
  • ORACLE 根据分组排序产生序列号

    对应的语法是这样的 select row number over partition by col1 order by col2 seq 具体的场景如下 如果一张表中保存了整个年级的各个班级每个同学的语文成绩 create table Sc
  • Linux系统常用命令

    操作系统 作用 是管理好硬件设备 并为用户和应用程序提供一个简单的接口 以便于使用 作为中间人 连接硬件和软件 linux 安全 稳定 免费 占有率高 嵌入式操作系统 linux发展历程 unix gt minix gt linux 发行版
  • 自定义oh-my-zsh主题风格,代码和语法的解释

    自定义oh my zsh主题风格 代码和语法的解释 摘要 简要介绍 zsh theme的代码 不涉及函数 关键词 ohmyzsh zsh theme语法 https github com ohmyzsh ohmyzsh wiki Theme