ohmyzsh/ohmyzsh

GitHub: ohmyzsh/ohmyzsh

一个由社区驱动的 zsh 配置管理框架,通过整合数百个插件和主题让终端环境更易用、更美观。

Stars: 185113 | Forks: 26305

Oh My Zsh

Oh My Zsh 是一个开源、社区驱动的用于管理 [zsh](https://www.zsh.org/) 配置的框架。 听起来很无聊。让我们重新来过。 **Oh My Zsh 不会让你变成 10 倍开发者……但你可能会有这种感觉。** 一旦安装,你的终端 shell 将成为街谈巷议的焦点 _否则退款!_ 在命令提示符中敲击每一个按键时,你都能利用数百个强大的插件和精美的主题。 陌生人在咖啡馆里会走到你面前问你,_“这太神奇了!你是某种天才吗?”_ 最后,你将开始获得你一直觉得自己应得的关注。……或者也许你会利用节省下来的时间更经常地使用牙线。😬 欲了解更多信息,请访问 [ohmyz.sh](https://ohmyz.sh),在 X(前 Twitter)上关注 [@ohmyzsh](https://x.com/ohmyzsh),并加入我们的 [Discord](https://discord.gg/ohmyzsh)。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/81699f1347125646.svg)](https://github.com/ohmyzsh/ohmyzsh/actions?query=workflow%3ACI) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10713/badge)](https://www.bestpractices.dev/projects/10713) [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/ohmyzsh?label=%40ohmyzsh&logo=x&style=flat)](https://twitter.com/intent/follow?screen_name=ohmyzsh) [![Mastodon Follow](https://img.shields.io/mastodon/follow/111169632522566717?label=%40ohmyzsh&domain=https%3A%2F%2Fmstdn.social&logo=mastodon&style=flat)](https://mstdn.social/@ohmyzsh) [![Discord server](https://img.shields.io/discord/642496866407284746)](https://discord.gg/ohmyzsh)
目录 - [入门](#getting-started) - [操作系统兼容性](#operating-system-compatibility) - [前置条件](#prerequisites) - [基本安装](#basic-installation) - [手动检查](#manual-inspection) - [使用 Oh My Zsh](#using-oh-my-zsh) - [插件](#plugins) - [启用插件](#enabling-plugins) - [使用插件](#using-plugins) - [主题](#themes) - [选择主题](#selecting-a-theme) - [FAQ](#faq) - [进阶主题](#advanced-topics) - [高级安装](#advanced-installation) - [自定义目录](#custom-directory) - [无人值守安装](#unattended-install) - [从 Fork 仓库安装](#installing-from-a-forked-repository) - [手动安装](#manual-installation) - [安装问题](#installation-problems) - [自定义插件和主题](#custom-plugins-and-themes) - [在 macOS 和 FreeBSD 系统上启用 GNU ls](#enable-gnu-ls-in-macos-and-freebsd-systems) - [跳过 Aliases](#skip-aliases) - [Async git prompt](#async-git-prompt) - [获取更新](#getting-updates) - [更新详细程度](#updates-verbosity) - [手动更新](#manual-updates) - [卸载 Oh My Zsh](#uninstalling-oh-my-zsh) - [如何为 Oh My Zsh 做贡献?](#how-do-i-contribute-to-oh-my-zsh) - [不要发送主题给我们](#do-not-send-us-themes) - [贡献者](#contributors) - [关注我们](#follow-us) - [周边商品](#merchandise) - [许可证](#license) - [关于 Planet Argon](#about-planet-argon)
## 入门 ### 操作系统兼容性 | O/S | Status | | :------------- | :----: | | Android | ✅ | | freeBSD | ✅ | | LCARS | 🛸 | | Linux | ✅ | | macOS | ✅ | | OS/2 Warp | ❌ | | Windows (WSL2) | ✅ | ### 前置条件 - 应安装 [Zsh](https://www.zsh.org)(v4.3.9 或更高版本都可以,但我们建议使用 5.0.8 及更高版本)。如果未预装(运行 `zsh --version` 确认),请查看此处的 wiki 说明:[Installing ZSH](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH) - 应安装 `curl` 或 `wget` - 应安装 `git`(建议 v2.4.11 或更高版本) ### 基本安装 Oh My Zsh 是通过在终端中运行以下命令之一来安装的。你可以通过命令行使用 `curl`、`wget` 或其他类似工具进行安装。 | Method | Command | | :-------- | :------------------------------------------------------------------------------------------------ | | **curl** | `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | | **wget** | `sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | | **fetch** | `sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | 或者,安装脚本也在 GitHub 外部进行了镜像。如果你在中国或印度(针对某些 ISP)等屏蔽 `raw.githubusercontent.com` 的国家/地区,可能需要使用此 URL: | Method | Command | | :-------- | :------------------------------------------------ | | **curl** | `sh -c "$(curl -fsSL https://install.ohmyz.sh/)"` | | **wget** | `sh -c "$(wget -O- https://install.ohmyz.sh/)"` | | **fetch** | `sh -c "$(fetch -o - https://install.ohmyz.sh/)"` | _请注意,任何之前的 `.zshrc` 都将重命名为 `.zshrc.pre-oh-my-zsh`。安装后,你可以将要保留的配置移动到新的 `.zshrc` 中。_ #### 手动检查 检查你尚不了解的项目的安装脚本是一个好习惯。你可以先下载安装脚本,浏览一遍以确保一切正常,然后再运行它: ``` wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh sh install.sh ``` 如果上述 URL 超时或失败,你可能需要将 URL 替换为 `https://install.ohmyz.sh` 才能获取脚本。 ## 使用 Oh My Zsh ### 插件 Oh My Zsh 附带了大量供你使用的插件。你可以查看 [plugins](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins) 目录和/或 [wiki](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins) 以了解当前可用的内容。 #### 启用插件 一旦你发现了一个(或几个)想在 Oh My Zsh 中使用的插件,你需要在 `.zshrc` 文件中启用它们。你会在 `$HOME` 目录中找到 zshrc 文件。用你喜欢的文本编辑器打开它,你会看到一个可以列出所有你想加载的插件的地方。 ``` vi ~/.zshrc ``` 例如,它可能看起来像这样: ``` plugins=( git bundler dotenv macos rake rbenv ruby ) ``` _请注意,插件由空格(空格、制表符、换行符……)分隔。**不要**在它们之间使用逗号,否则会出错。_ #### 使用插件 每个内置插件都包含一个 **README** 文档。该 README 应展示别名(如果插件添加了任何别名)以及该特定插件中包含的额外好东西。 ### 主题 我们承认。在 Oh My Zsh 世界早期,我们可能对主题有点过于热衷。我们现在捆绑了一百五十多个主题。其中大多数在 wiki 上都有 [截图](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)(我们正在努力更新!)。 快去看看吧! #### 选择主题 _Robby 的主题是默认主题。它不是最花哨的。它不是最简单的。它只是合适的主题(对他而言)。_ 一旦你找到想使用的主题,你需要编辑 `~/.zshrc` 文件。你会在里面看到一个环境变量(全大写),如下所示: ``` ZSH_THEME="robbyrussell" ``` 要使用其他主题,只需更改该值以匹配所需主题的名称。例如: ``` ZSH_THEME="agnoster" # (this is one of the fancy ones) # 参见 https://github.com/ohmyzsh/ohmyzsh/wiki/Themes#agnoster ``` 打开一个新的终端窗口,你的提示符应该看起来像这样: ![Agnoster theme](https://cloud.githubusercontent.com/assets/2618447/6316862/70f58fb6-ba03-11e4-82c9-c083bf9a6574.png) 如果你没有找到适合你需求的主题,请查看 wiki [更多主题](https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes)。 如果你感觉有点调皮,你可以让计算机在每次打开新的终端窗口时为你随机选择一个主题。 ``` ZSH_THEME="random" # (...please let it be pie... please be some pie..) ``` 如果你想从你喜欢的主题列表中挑选一个随机主题: ``` ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) ``` 如果你只知道你不喜欢哪些主题,你可以类似地将它们添加到忽略列表中: ``` ZSH_THEME_RANDOM_IGNORED=(pygmalion tjkirch_mod) ``` ### 常见问题解答 如果你有更多问题或疑问,你可能会在我们的 [FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ) 中找到解决方案。 ## 进阶主题 如果你是那种喜欢亲自动手的人,这些部分可能会引起你的共鸣。 ### 高级安装 某些用户可能希望手动安装 Oh My Zsh,或者更改安装程序接受的默认路径或其他设置(这些设置也记录在安装脚本的顶部)。 #### 自定义目录 默认位置是 `~/.oh-my-zsh`(隐藏在你的主目录中,你可以使用 `cd ~/.oh-my-zsh` 访问它) 如果你想使用 `ZSH` 环境变量更改安装目录,可以通过在安装前运行 `export ZSH=/your/path`,或者在安装管道结束前设置它,如下所示: ``` ZSH="$HOME/.dotfiles/oh-my-zsh" sh install.sh ``` #### 无人值守安装 如果你将 Oh My Zsh 安装脚本作为自动安装的一部分运行,则可以将 `--unattended` 标志传递给 `install.sh` 脚本。这将产生不尝试更改默认 shell 的效果,并且安装完成后也不会运行 `zsh`。 ``` sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended ``` 如果你在中国、印度或其他屏蔽 `raw.githubusercontent.com` 的国家/地区,你可能需要将 URL 替换为 `https://install.ohmyz.sh` 才能安装。 #### 从 Fork 仓库安装 安装脚本还接受这些变量,以允许安装不同的仓库: - `REPO`(默认值:`ohmyzsh/ohmyzsh`):采用 `owner/repository` 的形式。如果你设置此变量,安装程序将在 `https://github.com/{owner}/{repository}` 查找仓库。 - `REMOTE`(默认值:`https://github.com/${REPO}.git`):这是 git 仓库克隆的完整 URL。如果你想从不在 GitHub 上的 fork(GitLab、Bitbucket...)安装,或者如果你想使用 SSH 而不是 HTTPS(`git@github.com:user/project.git`)进行克隆,可以使用此设置。 _注意:它与设置 `REPO` 变量不兼容。此设置优先。_ - `BRANCH`(默认值:`master`):如果你想更改克隆仓库时要检出的默认分支,可以使用此设置。这对于测试 Pull Request 或如果你想使用 `master` 以外的分支可能很有用。 例如: ``` REPO=apjanke/oh-my-zsh BRANCH=edge sh install.sh ``` #### 手动安装 ##### 1. 克隆仓库 ``` git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh ``` ##### 2. _可选_,备份你现有的 `~/.zshrc` 文件 ``` cp ~/.zshrc ~/.zshrc.orig ``` ##### 3. 创建新的 Zsh 配置文件 你可以通过复制我们为你包含的模板来创建新的 zsh 配置文件。 ``` cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc ``` ##### 4. 更改你的默认 Shell ``` chsh -s $(which zsh) ``` 你必须从用户会话中注销并重新登录才能看到此更改。 ##### 5. 初始化你的新 Zsh 配置 一旦你打开一个新的终端窗口,它应该会加载带有 Oh My Zsh 配置的 zsh。 ### 安装问题 如果你在安装时遇到任何小问题,这里有一些常见的修复方法。 - 切换到 `oh-my-zsh` 后,如果你找不到某些命令,你 _可能_ 需要在 `~/.zshrc` 中修改你的 `PATH`。 - 如果你手动安装或更改了安装位置,请检查 `~/.zshrc` 中的 `ZSH` 环境变量。 ### 自定义插件和主题 如果你想覆盖任何默认行为,只需在 `custom/` 目录中添加一个新文件(以 `.zsh` 结尾)。 如果你有许多功能协同良好,你可以将它们作为 `XYZ.plugin.zsh` 文件放在 `custom/plugins/` 目录中,然后启用此插件。 如果你想覆盖 Oh My Zsh 分发的插件的功能,请在 `custom/plugins/` 目录中创建一个同名的插件,它将被加载以代替 `plugins/` 中的插件。 ### 在 macOS 和 FreeBSD 系统上启用 GNU ls Oh My Zsh 中的默认行为是在 macOS 和 FreeBSD 系统中使用 BSD `ls`。如果安装了 GNU `ls`(作为 `gls` 命令),你可以选择使用它。为此,你可以在 source `oh-my-zsh.sh` 之前使用基于 zstyle 的配置: ``` zstyle ':omz:lib:theme-and-appearance' gnu-ls yes ``` _注意:这与 `DISABLE_LS_COLORS=true` 不兼容_ ### 跳过 Aliases 如果你想跳过默认的 Oh My Zsh aliases(在 `lib/*` 文件中定义的那些或插件 aliases,你可以在 **加载 Oh My Zsh 之前** 在 `~/.zshrc` 文件中使用以下设置。请注意,根据你的需求,有许多不同的跳过 aliases 的方法。 ``` # 跳过 lib 文件和已启用插件中的所有 aliases zstyle ':omz:*' aliases no # 跳过 lib 文件中的所有 aliases zstyle ':omz:lib:*' aliases no # 仅跳过 directories.zsh lib 文件中定义的 aliases zstyle ':omz:lib:directories' aliases no # 跳过所有插件 aliases zstyle ':omz:plugins:*' aliases no # 仅跳过 git 插件中的 aliases zstyle ':omz:plugins:git' aliases no ``` 你可以根据更具体的作用域优先的原则以其他方式组合这些: ``` # 跳过除 git 插件以外的所有插件 aliases zstyle ':omz:plugins:*' aliases no zstyle ':omz:plugins:git' aliases yes ``` 此功能的先前版本使用以下设置,该设置已被删除: ``` zstyle ':omz:directories' aliases no ``` 取而代之的是,你现在可以使用以下内容: ``` zstyle ':omz:lib:directories' aliases no ``` #### 注意 ### 异步 git 提示符 Async prompt functions 是一项实验性功能(包含于 2024 年 4 月 3 日),允许 Oh My Zsh 异步渲染提示信息。这可以提高提示渲染性能,但它可能不适用于某些设置。我们希望这不是问题,但如果你发现此新功能有问题,可以通过在 source Oh My Zsh 之前在 .zshrc 文件中设置以下内容来关闭它: ``` zstyle ':omz:alpha:lib:git' async-prompt no ``` 如果你的问题是 git 提示刚刚停止出现,你可以尝试通过在 source `oh-my-zsh.sh` 之前设置以下配置来强制它。如果仍然不起作用,请提交一个 issue 并附上你的情况。 ``` zstyle ':omz:alpha:lib:git' async-prompt force ``` ## 获取更新 默认情况下,系统将每 2 周提示你检查更新。你可以通过 **在加载 Oh My Zsh 之前** 在 `~/.zshrc` 文件中添加一行来选择其他更新模式: 1. 自动更新,无需确认提示: zstyle ':omz:update' mode auto 2. 如果有可用更新,仅每隔几天提供一次提醒: zstyle ':omz:update' mode reminder 3. 完全禁用自动更新: zstyle ':omz:update' mode disabled 注意:你可以使用以下设置控制 Oh My Zsh 检查更新的频率: ``` # 这将每 7 天检查一次更新 zstyle ':omz:update' frequency 7 # 这将每次打开终端时检查更新(不推荐) zstyle ':omz:update' frequency 0 ``` ### 更新详细程度 你还可以使用以下设置限制更新详细程度: ``` zstyle ':omz:update' verbose default # default update prompt zstyle ':omz:update' verbose minimal # only few lines zstyle ':omz:update' verbose silent # only errors ``` ### 手动更新 如果你想在任何时间点更新(也许有人刚刚发布了一个新插件,你不想等一个星期?)你只需要运行: ``` omz update ``` 魔法! 🎉 ## 卸载 Oh My Zsh Oh My Zsh 并不适合所有人。我们会想念你的,但我们要让这次分手变得轻松。 如果你想卸载 `oh-my-zsh`,只需从命令行运行 `uninstall_oh_my_zsh`。它将删除自身并恢复你之前的 `bash` 或 `zsh` 配置。 ## 如何为 Oh My Zsh 做贡献? 在你参与我们令人愉快的社区之前,请阅读 [行为准则](CODE_OF_CONDUCT.md)。 我远不是 [Zsh](https://www.zsh.org/) 专家,并怀疑有许多改进的方法——如果你有关于如何使配置更易于维护(和更快)的想法,不要犹豫,fork 并发送 pull request! 我们也需要人来测试 pull request。所以看看 [未解决的 issue](https://github.com/ohmyzsh/ohmyzsh/issues) 并在你能提供帮助的地方提供帮助。 有关更多详细信息,请参阅 [贡献](CONTRIBUTING.md)。 ### 不要发送主题给我们 我们暂时有(超过)足够的主题。请将你的主题添加到 [外部主题](https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes) wiki 页面。 ## 贡献者 Oh My Zsh 拥有充满活力的快乐用户和令人愉快的贡献者社区。没有我们贡献者的所有时间和帮助,它就不会这么棒。 非常感谢! ## 关注我们 我们在社交媒体上: - X(前 Twitter)上的 [@ohmyzsh](https://x.com/ohmyzsh)。你应该关注它。 - [Facebook](https://www.facebook.com/Oh-My-Zsh-296616263819290/) 戳我们一下。 - [Instagram](https://www.instagram.com/_ohmyzsh/) 在你展示 Oh My Zsh 的帖子中标记我们! - [Discord](https://discord.gg/ohmyzsh) 与我们聊天! ## 周边商品 我们有 [贴纸、衬衫和咖啡杯](https://commitgoods.com/collections/oh-my-zsh?utm_source=github) 供你展示你对 Oh My Zsh 的喜爱。再次,你将成为街谈巷议的焦点! ## 许可证 Oh My Zsh 根据 [MIT 许可证](LICENSE.txt) 发布。 ## 关于 Planet Argon ![Planet Argon](https://pa-github-assets.s3.amazonaws.com/PARGON_logo_digital_COL-small.jpg) Oh My Zsh 由 [Planet Argon](https://www.planetargon.com/?utm_source=github) 团队创建,这是一家 [Ruby on Rails 开发代理机构](https://www.planetargon.com/services/ruby-on-rails-development?utm_source=github)。 查看我们的 [其他开源项目](https://www.planetargon.com/open-source?utm_source=github)。
标签:CLI, Git集成, Oh My Zsh, Shell配置, WiFi技术, Zsh, 主题, 威胁情报, 开发效率, 开发者工具, 插件管理, 生产力, 终端美化, 网络可观测性, 网络安全研究, 网络调试, 自动化