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

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)。
[](https://github.com/ohmyzsh/ohmyzsh/actions?query=workflow%3ACI)
[](https://www.bestpractices.dev/projects/10713)
[](https://twitter.com/intent/follow?screen_name=ohmyzsh)
[](https://mstdn.social/@ohmyzsh)
[](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
```
打开一个新的终端窗口,你的提示符应该看起来像这样:

如果你没有找到适合你需求的主题,请查看 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

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, 主题, 威胁情报, 开发效率, 开发者工具, 插件管理, 生产力, 终端美化, 网络可观测性, 网络安全研究, 网络调试, 自动化