自定义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主题风格,代码和语法的解释 的相关文章

  • Swift 5 MacOS 图像调整大小内存问题

    我是使用 Swift 进行 Mac OS 应用程序开发的新手 但我尝试制作简单的 ImageResizer 应用程序 我必须调整 50k 图像的大小 10个小时后 内存已增加到近120GB 我以为 Swift 也有垃圾收集器 为什么它可以增
  • 如何在 OS X 版 Chrome 上手动安装扩展程序?

    我已经创建了一个 chrome 扩展 我想将其手动添加到 mac osx 10 7 和 10 8 上的 chrome 我尝试执行以下步骤 在以下 url 下添加扩展文件夹 用户 talmutzafi 库 应用程序支持 Google Chro
  • 为程序员设置 Mac [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • OSX Swift 在默认浏览器中打开 URL

    如何使用 Swift 作为编程语言和 OSX 作为平台在系统默认浏览器中打开 URL 我发现了很多UIApplication like UIApplication sharedApplication openURL NSURL string
  • 在 OS X 上以编程方式禁用环境光传感器屏幕调暗

    我已经在内核代码仓库中挖掘了好几天了 但我在任何地方都找不到这个 我想禁用 启用 检测许多高端 Mac 笔记本电脑所具有的基于环境光传感器的屏幕调光的状态 这是通过显示控制面板中的 自动调整亮度 复选框激活的调光 请注意 我是NOT谈论半暗
  • dyld[45923]:库未加载:/usr/local/opt/libavif/lib/libavif.15.dylib

    dyld 45923 Library not loaded usr local opt libavif lib libavif 15 dylib Referenced from lt 735019D8 AF6E 3CD1 9AD4 3BE4
  • 在C语言中如何清屏? [复制]

    这个问题在这里已经有答案了 我想清除屏幕上的所有文字 我尝试过使用 include
  • 为什么 Mac OS 上的 C 运行时允许预组合和分解的 UTF-8?

    所以我们都知道 Mac OS 上的文件系统具有使用完全分解的 UTF 8 的古怪功能 如果您调用 POSIX API 例如realpath 例如 您将从 Mac OS 返回这样一个完全分解的 UTF 8 字符串 当使用像这样的 API 时f
  • 在 OSX 和 GNU 中使用“find”删除带有数字的文件名

    我正在尝试搜索一个文件并删除名称中包含数字的类似文件 我的文件 txt from myfile 00 04 version txt myfile 00 txt find E iregex myfile 0 9 1 txt 删除 myfile
  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th
  • 为什么 struct tm 中的 tm_year 成员相对于 1900 而不是 macOS 上 C 中的 1970?

    当我遇到这个问题时 我正在尝试专家 C 编程中的示例 我的程序基本上做一件事 使用标准gmtime运行一下 看看自 1970 年以来已经过去了多少年 这是我的程序 include
  • VS Code 即使关闭也使用 100% CPU

    即使未打开 VS Code 也会占用 100 的 CPU 使用率 我跑了ps aux grep PID命令查看详细信息但什么也看不懂 这是输出 tawhid 27099 100 0 0 1 447352160 11856 R 7 18PM
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • dyld:惰性符号绑定失败

    当我尝试运行时遇到一个奇怪的错误gatsby develop在新创建的 gatsby 项目中 这不应该与 gatsby js 静态站点生成器 有任何关系 因为我在不同的场合也遇到了相同的错误 当我跑步时gatsby develop在我的一个
  • 从 python 检测 macOS 中的暗模式

    我正在编写一个 PyQt 应用程序 我必须添加一个补丁 以便在启用暗模式的 Macos 上可以读取字体 app QApplication Fix for the font colours on macos when running dark
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 超类与类SpecificationPolicy不匹配

    我得到了一个superclass mismatch for class SpecificationPolicy尝试安装或升级某些brew 软件包时出错 例如 更新安装 supabase CLI 时 brew install supabase
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com

随机推荐

  • 怎么在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