2022-02-04 11:07:27 +08:00
|
|
|
|
<p align="center"><img src="https://ohmyzsh.s3.amazonaws.com/omz-ansi-github.png" alt="Oh My Zsh"></p>
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Oh My Zsh is an open source, community-driven framework for managing your [zsh](https://www.zsh.org/)
|
|
|
|
|
configuration.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2017-02-26 11:59:11 +08:00
|
|
|
|
Sounds boring. Let's try again.
|
2016-09-25 07:06:44 +08:00
|
|
|
|
|
2020-09-26 19:05:31 +08:00
|
|
|
|
**Oh My Zsh will not make you a 10x developer...but you may feel like one.**
|
2016-09-25 07:06:44 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Once installed, your terminal shell will become the talk of the town _or your money back!_ With each keystroke
|
|
|
|
|
in your command prompt, you'll take advantage of the hundreds of powerful plugins and beautiful themes.
|
|
|
|
|
Strangers will come up to you in cafés and ask you, _"that is amazing! are you some sort of genius?"_
|
2016-09-25 07:06:44 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Finally, you'll begin to get the sort of attention that you have always felt you deserved. ...or maybe you'll
|
|
|
|
|
use the time that you're saving to start flossing more often. 😬
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
To learn more, visit [ohmyz.sh](https://ohmyz.sh), follow [@ohmyzsh](https://x.com/ohmyzsh) on X (formerly
|
|
|
|
|
Twitter), and join us on [Discord](https://discord.gg/ohmyzsh).
|
2019-12-27 22:43:43 +08:00
|
|
|
|
|
2020-02-04 20:07:40 +08:00
|
|
|
|
[![CI](https://github.com/ohmyzsh/ohmyzsh/workflows/CI/badge.svg)](https://github.com/ohmyzsh/ohmyzsh/actions?query=workflow%3ACI)
|
2023-10-09 02:01:46 +08:00
|
|
|
|
[![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)
|
2020-06-11 01:32:26 +08:00
|
|
|
|
[![Discord server](https://img.shields.io/discord/642496866407284746)](https://discord.gg/ohmyzsh)
|
2020-10-12 02:12:16 +08:00
|
|
|
|
[![Gitpod ready](https://img.shields.io/badge/Gitpod-ready-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ohmyzsh/ohmyzsh)
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2022-03-15 01:09:45 +08:00
|
|
|
|
<details>
|
|
|
|
|
<summary>Table of Contents</summary>
|
|
|
|
|
|
|
|
|
|
- [Getting Started](#getting-started)
|
2023-10-12 02:57:01 +08:00
|
|
|
|
- [Operating System Compatibility](#operating-system-compatibility)
|
2022-03-15 01:09:45 +08:00
|
|
|
|
- [Prerequisites](#prerequisites)
|
|
|
|
|
- [Basic Installation](#basic-installation)
|
2023-10-12 02:57:01 +08:00
|
|
|
|
- [Manual Inspection](#manual-inspection)
|
2022-03-15 01:09:45 +08:00
|
|
|
|
- [Using Oh My Zsh](#using-oh-my-zsh)
|
|
|
|
|
- [Plugins](#plugins)
|
|
|
|
|
- [Enabling Plugins](#enabling-plugins)
|
|
|
|
|
- [Using Plugins](#using-plugins)
|
|
|
|
|
- [Themes](#themes)
|
2023-10-12 02:57:01 +08:00
|
|
|
|
- [Selecting A Theme](#selecting-a-theme)
|
2022-03-15 01:09:45 +08:00
|
|
|
|
- [FAQ](#faq)
|
|
|
|
|
- [Advanced Topics](#advanced-topics)
|
|
|
|
|
- [Advanced Installation](#advanced-installation)
|
|
|
|
|
- [Custom Directory](#custom-directory)
|
2023-10-12 02:57:01 +08:00
|
|
|
|
- [Unattended Install](#unattended-install)
|
|
|
|
|
- [Installing From A Forked Repository](#installing-from-a-forked-repository)
|
2022-03-15 01:09:45 +08:00
|
|
|
|
- [Manual Installation](#manual-installation)
|
|
|
|
|
- [Installation Problems](#installation-problems)
|
2023-10-12 02:57:01 +08:00
|
|
|
|
- [Custom Plugins And Themes](#custom-plugins-and-themes)
|
|
|
|
|
- [Enable GNU ls In macOS And freeBSD Systems](#enable-gnu-ls-in-macos-and-freebsd-systems)
|
|
|
|
|
- [Skip Aliases](#skip-aliases)
|
2024-10-09 02:26:23 +08:00
|
|
|
|
- [Async git prompt](#async-git-prompt)
|
2022-03-15 01:09:45 +08:00
|
|
|
|
- [Getting Updates](#getting-updates)
|
2023-10-12 02:57:01 +08:00
|
|
|
|
- [Updates Verbosity](#updates-verbosity)
|
2022-03-15 01:09:45 +08:00
|
|
|
|
- [Manual Updates](#manual-updates)
|
|
|
|
|
- [Uninstalling Oh My Zsh](#uninstalling-oh-my-zsh)
|
2023-10-12 02:57:01 +08:00
|
|
|
|
- [How Do I Contribute To Oh My Zsh?](#how-do-i-contribute-to-oh-my-zsh)
|
|
|
|
|
- [Do Not Send Us Themes](#do-not-send-us-themes)
|
2022-03-15 01:09:45 +08:00
|
|
|
|
- [Contributors](#contributors)
|
|
|
|
|
- [Follow Us](#follow-us)
|
|
|
|
|
- [Merchandise](#merchandise)
|
|
|
|
|
- [License](#license)
|
|
|
|
|
- [About Planet Argon](#about-planet-argon)
|
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
2015-02-22 08:07:27 +08:00
|
|
|
|
## Getting Started
|
|
|
|
|
|
2023-10-08 20:05:03 +08:00
|
|
|
|
### Operating System Compatibility
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
| O/S | Status |
|
|
|
|
|
| :------------- | :----: |
|
|
|
|
|
| Android | ✅ |
|
|
|
|
|
| freeBSD | ✅ |
|
|
|
|
|
| LCARS | 🛸 |
|
|
|
|
|
| Linux | ✅ |
|
|
|
|
|
| macOS | ✅ |
|
|
|
|
|
| OS/2 Warp | ❌ |
|
|
|
|
|
| Windows (WSL2) | ✅ |
|
2023-10-08 20:05:03 +08:00
|
|
|
|
|
2015-02-22 08:11:57 +08:00
|
|
|
|
### Prerequisites
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
- [Zsh](https://www.zsh.org) should be installed (v4.3.9 or more recent is fine but we prefer 5.0.8 and
|
|
|
|
|
newer). If not pre-installed (run `zsh --version` to confirm), check the following wiki instructions here:
|
|
|
|
|
[Installing ZSH](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH)
|
2020-09-26 19:05:31 +08:00
|
|
|
|
- `curl` or `wget` should be installed
|
|
|
|
|
- `git` should be installed (recommended v2.4.11 or higher)
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
### Basic Installation
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Oh My Zsh is installed by running one of the following commands in your terminal. You can install this via the
|
|
|
|
|
command-line with either `curl`, `wget` or another similar tool.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2020-09-26 19:05:31 +08:00
|
|
|
|
| Method | Command |
|
2022-03-15 01:09:45 +08:00
|
|
|
|
| :-------- | :------------------------------------------------------------------------------------------------ |
|
2020-09-26 19:05:31 +08:00
|
|
|
|
| **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)"` |
|
2020-08-20 17:26:39 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Alternatively, the installer is also mirrored outside GitHub. Using this URL instead may be required if you're
|
|
|
|
|
in a country like China or India (for certain ISPs), that blocks `raw.githubusercontent.com`:
|
2023-12-01 23:06:50 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
| 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/)"` |
|
2023-12-01 23:06:50 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
_Note that any previous `.zshrc` will be renamed to `.zshrc.pre-oh-my-zsh`. After installation, you can move
|
|
|
|
|
the configuration you want to preserve into the new `.zshrc`._
|
2021-12-18 08:12:31 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
#### Manual Inspection
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
It's a good idea to inspect the install script from projects you don't yet know. You can do that by
|
|
|
|
|
downloading the install script first, looking through it so everything looks normal, then running it:
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2020-09-26 19:05:31 +08:00
|
|
|
|
wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
|
2019-06-03 22:47:54 +08:00
|
|
|
|
sh install.sh
|
2015-10-21 23:39:13 +08:00
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If the above URL times out or otherwise fails, you may have to substitute the URL for
|
|
|
|
|
`https://install.ohmyz.sh` to be able to get the script.
|
2023-12-01 23:06:50 +08:00
|
|
|
|
|
2015-02-22 08:07:27 +08:00
|
|
|
|
## Using Oh My Zsh
|
|
|
|
|
|
|
|
|
|
### Plugins
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Oh My Zsh comes with a shitload of plugins for you to take advantage of. You can take a look in the
|
|
|
|
|
[plugins](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins) directory and/or the
|
|
|
|
|
[wiki](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins) to see what's currently available.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
#### Enabling Plugins
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Once you spot a plugin (or several) that you'd like to use with Oh My Zsh, you'll need to enable them in the
|
|
|
|
|
`.zshrc` file. You'll find the zshrc file in your `$HOME` directory. Open it with your favorite text editor
|
|
|
|
|
and you'll see a spot to list all the plugins you want to load.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2017-11-09 02:46:40 +08:00
|
|
|
|
vi ~/.zshrc
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
For example, this might begin to look like this:
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2017-11-09 02:46:40 +08:00
|
|
|
|
plugins=(
|
|
|
|
|
git
|
|
|
|
|
bundler
|
|
|
|
|
dotenv
|
2021-11-06 07:40:38 +08:00
|
|
|
|
macos
|
2017-11-09 02:46:40 +08:00
|
|
|
|
rake
|
|
|
|
|
rbenv
|
|
|
|
|
ruby
|
|
|
|
|
)
|
2015-03-01 13:36:33 +08:00
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
_Note that the plugins are separated by whitespace (spaces, tabs, new lines...). **Do not** use commas between
|
|
|
|
|
them or it will break._
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2015-02-22 08:07:27 +08:00
|
|
|
|
#### Using Plugins
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Each built-in plugin includes a **README**, documenting it. This README should show the aliases (if the plugin
|
|
|
|
|
adds any) and extra goodies that are included in that particular plugin.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
### Themes
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
We'll admit it. Early in the Oh My Zsh world, we may have gotten a bit too theme happy. We have over one
|
|
|
|
|
hundred and fifty themes now bundled. Most of them have
|
|
|
|
|
[screenshots](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes) on the wiki (We are working on updating this!).
|
|
|
|
|
Check them out!
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
#### Selecting A Theme
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
_Robby's theme is the default one. It's not the fanciest one. It's not the simplest one. It's just the right
|
|
|
|
|
one (for him)._
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Once you find a theme that you'd like to use, you will need to edit the `~/.zshrc` file. You'll see an
|
|
|
|
|
environment variable (all caps) in there that looks like:
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2015-03-01 13:36:33 +08:00
|
|
|
|
ZSH_THEME="robbyrussell"
|
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2015-08-26 12:04:28 +08:00
|
|
|
|
To use a different theme, simply change the value to match the name of your desired theme. For example:
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2015-03-01 13:36:33 +08:00
|
|
|
|
ZSH_THEME="agnoster" # (this is one of the fancy ones)
|
2019-11-21 09:26:18 +08:00
|
|
|
|
# see https://github.com/ohmyzsh/ohmyzsh/wiki/Themes#agnoster
|
2015-03-01 13:36:33 +08:00
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
<!-- prettier-ignore-start -->
|
2024-08-15 23:04:50 +08:00
|
|
|
|
> [!NOTE]
|
|
|
|
|
> You will many times see screenshots for a zsh theme, and try it out, and find that it doesn't look the same for you.
|
2024-10-09 02:13:28 +08:00
|
|
|
|
<!-- prettier-ignore-end -->
|
|
|
|
|
|
|
|
|
|
> This is because many themes require installing a [Powerline Font](https://github.com/powerline/fonts) or a
|
|
|
|
|
> [Nerd Font](https://github.com/ryanoasis/nerd-fonts) in order to render properly. Without them, these themes
|
|
|
|
|
> will render weird prompt symbols. Check out
|
|
|
|
|
> [the FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ#i-have-a-weird-character-in-my-prompt) for more
|
|
|
|
|
> information.
|
2024-08-15 23:04:50 +08:00
|
|
|
|
>
|
2024-10-09 02:13:28 +08:00
|
|
|
|
> Also, beware that themes only control what your prompt looks like. This is, the text you see before or after
|
|
|
|
|
> your cursor, where you'll type your commands. Themes don't control things such as the colors of your
|
|
|
|
|
> terminal window (known as _color scheme_) or the font of your terminal. These are settings that you can
|
|
|
|
|
> change in your terminal emulator. For more information, see
|
|
|
|
|
> [what is a zsh theme](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ#what-is-a-zsh-theme).
|
2017-11-01 20:57:15 +08:00
|
|
|
|
|
2016-10-18 03:27:58 +08:00
|
|
|
|
Open up a new terminal window and your prompt should look something like this:
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2015-03-01 13:36:33 +08:00
|
|
|
|
![Agnoster theme](https://cloud.githubusercontent.com/assets/2618447/6316862/70f58fb6-ba03-11e4-82c9-c083bf9a6574.png)
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
In case you did not find a suitable theme for your needs, please have a look at the wiki for
|
|
|
|
|
[more of them](https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes).
|
2015-05-25 07:15:37 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you're feeling feisty, you can let the computer select one randomly for you each time you open a new
|
|
|
|
|
terminal window.
|
2015-08-31 12:58:52 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2015-08-31 12:58:52 +08:00
|
|
|
|
ZSH_THEME="random" # (...please let it be pie... please be some pie..)
|
|
|
|
|
```
|
|
|
|
|
|
2015-12-01 13:03:00 +08:00
|
|
|
|
And if you want to pick random theme from a list of your favorite themes:
|
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2017-11-05 01:32:14 +08:00
|
|
|
|
ZSH_THEME_RANDOM_CANDIDATES=(
|
2015-12-01 13:03:00 +08:00
|
|
|
|
"robbyrussell"
|
|
|
|
|
"agnoster"
|
|
|
|
|
)
|
|
|
|
|
```
|
2015-08-31 12:58:52 +08:00
|
|
|
|
|
2020-09-19 01:34:17 +08:00
|
|
|
|
If you only know which themes you don't like, you can add them similarly to an ignored list:
|
2020-03-02 05:53:33 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2020-09-19 01:34:17 +08:00
|
|
|
|
ZSH_THEME_RANDOM_IGNORED=(pygmalion tjkirch_mod)
|
2020-03-02 05:53:33 +08:00
|
|
|
|
```
|
|
|
|
|
|
2019-11-26 01:59:31 +08:00
|
|
|
|
### FAQ
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you have some more questions or issues, you might find a solution in our
|
|
|
|
|
[FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ).
|
2019-11-26 01:59:31 +08:00
|
|
|
|
|
2015-02-22 08:07:27 +08:00
|
|
|
|
## Advanced Topics
|
|
|
|
|
|
2015-03-01 13:36:33 +08:00
|
|
|
|
If you're the type that likes to get their hands dirty, these sections might resonate.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
### Advanced Installation
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Some users may want to manually install Oh My Zsh, or change the default path or other settings that the
|
|
|
|
|
installer accepts (these settings are also documented at the top of the install script).
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
#### Custom Directory
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
The default location is `~/.oh-my-zsh` (hidden in your home directory, you can access it with
|
|
|
|
|
`cd ~/.oh-my-zsh`)
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2019-06-03 22:47:54 +08:00
|
|
|
|
If you'd like to change the install directory with the `ZSH` environment variable, either by running
|
2024-10-09 02:13:28 +08:00
|
|
|
|
`export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline like this:
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2019-06-03 22:47:54 +08:00
|
|
|
|
ZSH="$HOME/.dotfiles/oh-my-zsh" sh install.sh
|
|
|
|
|
```
|
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
#### Unattended Install
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you're running the Oh My Zsh install script as part of an automated install, you can pass the
|
|
|
|
|
`--unattended` flag to the `install.sh` script. This will have the effect of not trying to change the default
|
|
|
|
|
shell, and it also won't run `zsh` when the installation has finished.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2019-11-21 09:26:18 +08:00
|
|
|
|
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
2019-06-03 22:47:54 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you're in China, India, or another country that blocks `raw.githubusercontent.com`, you may have to
|
|
|
|
|
substitute the URL for `https://install.ohmyz.sh` for it to install.
|
2023-12-01 23:06:50 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
#### Installing From A Forked Repository
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2024-06-04 21:56:34 +08:00
|
|
|
|
The install script also accepts these variables to allow the installation of a different repository:
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
- `REPO` (default: `ohmyzsh/ohmyzsh`): this takes the form of `owner/repository`. If you set this variable,
|
|
|
|
|
the installer will look for a repository at `https://github.com/{owner}/{repository}`.
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
- `REMOTE` (default: `https://github.com/${REPO}.git`): this is the full URL of the git repository clone. You
|
|
|
|
|
can use this setting if you want to install from a fork that is not on GitHub (GitLab, Bitbucket...) or if
|
|
|
|
|
you want to clone with SSH instead of HTTPS (`git@github.com:user/project.git`).
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
|
|
|
|
_NOTE: it's incompatible with setting the `REPO` variable. This setting will take precedence._
|
|
|
|
|
|
|
|
|
|
- `BRANCH` (default: `master`): you can use this setting if you want to change the default branch to be
|
2024-10-09 02:13:28 +08:00
|
|
|
|
checked out when cloning the repository. This might be useful for testing a Pull Request, or if you want to
|
|
|
|
|
use a branch other than `master`.
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2019-06-03 22:47:54 +08:00
|
|
|
|
REPO=apjanke/oh-my-zsh BRANCH=edge sh install.sh
|
2015-03-01 13:36:33 +08:00
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
#### Manual Installation
|
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
##### 1. Clone The Repository <!-- omit in toc -->
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2019-11-21 09:26:18 +08:00
|
|
|
|
git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh
|
2015-03-01 13:36:33 +08:00
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
##### 2. _Optionally_, Backup Your Existing `~/.zshrc` File <!-- omit in toc -->
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2015-03-01 13:36:33 +08:00
|
|
|
|
cp ~/.zshrc ~/.zshrc.orig
|
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
##### 3. Create A New Zsh Configuration File <!-- omit in toc -->
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2016-10-18 03:27:58 +08:00
|
|
|
|
You can create a new zsh config file by copying the template that we have included for you.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2015-03-01 13:36:33 +08:00
|
|
|
|
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
|
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
##### 4. Change Your Default Shell <!-- omit in toc -->
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2019-06-03 22:47:54 +08:00
|
|
|
|
chsh -s $(which zsh)
|
2015-03-01 13:36:33 +08:00
|
|
|
|
```
|
2019-06-03 22:47:54 +08:00
|
|
|
|
|
|
|
|
|
You must log out from your user session and log back in to see this change.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
##### 5. Initialize Your New Zsh Configuration <!-- omit in toc -->
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration.
|
|
|
|
|
|
|
|
|
|
### Installation Problems
|
|
|
|
|
|
|
|
|
|
If you have any hiccups installing, here are a few common fixes.
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
- You _might_ need to modify your `PATH` in `~/.zshrc` if you're not able to find some commands after
|
|
|
|
|
switching to `oh-my-zsh`.
|
|
|
|
|
- If you installed manually or changed the install location, check the `ZSH` environment variable in
|
|
|
|
|
`~/.zshrc`.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
### Custom Plugins And Themes
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you want to override any of the default behaviors, just add a new file (ending in `.zsh`) in the `custom/`
|
|
|
|
|
directory.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you have many functions that go well together, you can put them as a `XYZ.plugin.zsh` file in the
|
|
|
|
|
`custom/plugins/` directory and then enable this plugin.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the
|
|
|
|
|
same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
### Enable GNU ls In macOS And freeBSD Systems
|
2023-05-02 18:41:01 +08:00
|
|
|
|
|
2023-05-09 18:10:05 +08:00
|
|
|
|
<a name="enable-gnu-ls"></a>
|
2023-05-02 18:41:01 +08:00
|
|
|
|
|
2024-06-04 21:56:34 +08:00
|
|
|
|
The default behaviour in Oh My Zsh is to use BSD `ls` in macOS and FreeBSD systems. If GNU `ls` is installed
|
2023-05-09 18:10:05 +08:00
|
|
|
|
(as `gls` command), you can choose to use it instead. To do it, you can use zstyle-based config before
|
|
|
|
|
sourcing `oh-my-zsh.sh`:
|
2023-05-02 18:41:01 +08:00
|
|
|
|
|
|
|
|
|
```zsh
|
2023-05-21 18:47:38 +08:00
|
|
|
|
zstyle ':omz:lib:theme-and-appearance' gnu-ls yes
|
2023-05-02 18:41:01 +08:00
|
|
|
|
```
|
|
|
|
|
|
2023-05-09 18:10:05 +08:00
|
|
|
|
_Note: this is not compatible with `DISABLE_LS_COLORS=true`_
|
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
### Skip Aliases
|
2023-02-02 18:30:34 +08:00
|
|
|
|
|
2023-04-04 05:14:36 +08:00
|
|
|
|
<a name="remove-directories-aliases"></a>
|
2023-02-02 18:30:34 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you want to skip default Oh My Zsh aliases (those defined in `lib/*` files) or plugin aliases, you can use
|
|
|
|
|
the settings below in your `~/.zshrc` file, **before Oh My Zsh is loaded**. Note that there are many different
|
|
|
|
|
ways to skip aliases, depending on your needs.
|
2023-04-04 05:14:36 +08:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
# Skip all aliases, in lib files and enabled plugins
|
|
|
|
|
zstyle ':omz:*' aliases no
|
|
|
|
|
|
|
|
|
|
# Skip all aliases in lib files
|
|
|
|
|
zstyle ':omz:lib:*' aliases no
|
|
|
|
|
# Skip only aliases defined in the directories.zsh lib file
|
|
|
|
|
zstyle ':omz:lib:directories' aliases no
|
|
|
|
|
|
|
|
|
|
# Skip all plugin aliases
|
|
|
|
|
zstyle ':omz:plugins:*' aliases no
|
|
|
|
|
# Skip only the aliases from the git plugin
|
|
|
|
|
zstyle ':omz:plugins:git' aliases no
|
|
|
|
|
```
|
|
|
|
|
|
2024-06-04 21:56:34 +08:00
|
|
|
|
You can combine these in other ways taking into account that more specific scopes take precedence:
|
2023-04-04 05:14:36 +08:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
# Skip all plugin aliases, except for the git plugin
|
|
|
|
|
zstyle ':omz:plugins:*' aliases no
|
|
|
|
|
zstyle ':omz:plugins:git' aliases yes
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
A previous version of this feature was using the setting below, which has been removed:
|
|
|
|
|
|
|
|
|
|
```sh
|
2023-02-02 18:30:34 +08:00
|
|
|
|
zstyle ':omz:directories' aliases no
|
|
|
|
|
```
|
|
|
|
|
|
2023-04-04 05:14:36 +08:00
|
|
|
|
Instead, you can now use the following:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
zstyle ':omz:lib:directories' aliases no
|
|
|
|
|
```
|
|
|
|
|
|
2024-07-31 05:21:42 +08:00
|
|
|
|
#### Notice <!-- omit in toc -->
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
> This feature is currently in a testing phase and it may be subject to change in the future. It is also not
|
|
|
|
|
> currently compatible with plugin managers such as zpm or zinit, which don't source the init script
|
|
|
|
|
> (`oh-my-zsh.sh`) where this feature is implemented in.
|
2024-07-31 05:21:42 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
> It is also not currently aware of "aliases" that are defined as functions. Example of such are `gccd`,
|
|
|
|
|
> `ggf`, or `ggl` functions from the git plugin.
|
2024-07-31 05:21:42 +08:00
|
|
|
|
|
2024-10-09 02:26:23 +08:00
|
|
|
|
### Async git prompt
|
2024-04-04 01:55:46 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Async prompt functions are an experimental feature (included on April 3, 2024) that allows Oh My Zsh to render
|
|
|
|
|
prompt information asynchronously. This can improve prompt rendering performance, but it might not work well
|
|
|
|
|
with some setups. We hope that's not an issue, but if you're seeing problems with this new feature, you can
|
|
|
|
|
turn it off by setting the following in your .zshrc file, before Oh My Zsh is sourced:
|
2024-04-04 01:55:46 +08:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
zstyle ':omz:alpha:lib:git' async-prompt no
|
|
|
|
|
```
|
|
|
|
|
|
2024-10-09 02:26:23 +08:00
|
|
|
|
If your problem is that the git prompt just stopped appearing, you can try to force it setting the following
|
|
|
|
|
configuration before `oh-my-zsh.sh` is sourced. If it still does not work, please open an issue with your
|
|
|
|
|
case.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
zstyle ':omz:alpha:lib:git' async-prompt force
|
|
|
|
|
```
|
|
|
|
|
|
2015-02-22 08:07:27 +08:00
|
|
|
|
## Getting Updates
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
By default, you will be prompted to check for updates every 2 weeks. You can choose other update modes by
|
|
|
|
|
adding a line to your `~/.zshrc` file, **before Oh My Zsh is loaded**:
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
1. Automatic update without confirmation prompt:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
zstyle ':omz:update' mode auto
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Just offer a reminder every few days, if there are updates available:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
zstyle ':omz:update' mode reminder
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. To disable automatic updates entirely:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
zstyle ':omz:update' mode disabled
|
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
NOTE: you can control how often Oh My Zsh checks for updates with the following setting:
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
|
|
|
|
# This will check for updates every 7 days
|
|
|
|
|
zstyle ':omz:update' frequency 7
|
|
|
|
|
# This will check for updates every time you open the terminal (not recommended)
|
|
|
|
|
zstyle ':omz:update' frequency 0
|
2015-03-01 13:36:33 +08:00
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
### Updates Verbosity
|
2023-03-28 18:50:05 +08:00
|
|
|
|
|
|
|
|
|
You can also limit the update verbosity with the following settings:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
zstyle ':omz:update' verbose default # default update prompt
|
|
|
|
|
|
|
|
|
|
zstyle ':omz:update' verbose minimal # only few lines
|
|
|
|
|
|
|
|
|
|
zstyle ':omz:update' verbose silent # only errors
|
|
|
|
|
```
|
|
|
|
|
|
2015-02-22 08:07:27 +08:00
|
|
|
|
### Manual Updates
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you'd like to update at any point in time (maybe someone just released a new plugin and you don't want to
|
|
|
|
|
wait a week?) you just need to run:
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2021-10-19 01:58:25 +08:00
|
|
|
|
```sh
|
2020-08-24 03:52:11 +08:00
|
|
|
|
omz update
|
2015-03-01 13:36:33 +08:00
|
|
|
|
```
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2017-11-09 02:46:40 +08:00
|
|
|
|
Magic! 🎉
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
## Uninstalling Oh My Zsh
|
|
|
|
|
|
|
|
|
|
Oh My Zsh isn't for everyone. We'll miss you, but we want to make this an easy breakup.
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
If you want to uninstall `oh-my-zsh`, just run `uninstall_oh_my_zsh` from the command-line. It will remove
|
|
|
|
|
itself and revert your previous `bash` or `zsh` configuration.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
## How Do I Contribute To Oh My Zsh?
|
2019-04-05 00:45:00 +08:00
|
|
|
|
|
|
|
|
|
Before you participate in our delightful community, please read the [code of conduct](CODE_OF_CONDUCT.md).
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
I'm far from being a [Zsh](https://www.zsh.org/) expert and suspect there are many ways to improve – if you
|
|
|
|
|
have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send
|
|
|
|
|
pull requests!
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
We also need people to test out pull requests. So take a look through
|
|
|
|
|
[the open issues](https://github.com/ohmyzsh/ohmyzsh/issues) and help where you can.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2019-04-05 00:45:00 +08:00
|
|
|
|
See [Contributing](CONTRIBUTING.md) for more details.
|
|
|
|
|
|
2023-10-12 02:57:01 +08:00
|
|
|
|
### Do Not Send Us Themes
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
We have (more than) enough themes for the time being. Please add your theme to the
|
|
|
|
|
[external themes](https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes) wiki page.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
## Contributors
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Oh My Zsh has a vibrant community of happy users and delightful contributors. Without all the time and help
|
|
|
|
|
from our contributors, it wouldn't be so awesome.
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
Thank you so much!
|
|
|
|
|
|
2024-03-12 10:43:08 +08:00
|
|
|
|
<a href="https://github.com/ohmyzsh/ohmyzsh/graphs/contributors">
|
|
|
|
|
<img src="https://contrib.rocks/image?repo=ohmyzsh/ohmyzsh" width="100%"/>
|
|
|
|
|
</a>
|
|
|
|
|
|
2015-02-22 08:07:27 +08:00
|
|
|
|
## Follow Us
|
|
|
|
|
|
2020-09-26 19:05:31 +08:00
|
|
|
|
We're on social media:
|
2016-09-25 07:06:44 +08:00
|
|
|
|
|
2024-07-03 14:51:19 +08:00
|
|
|
|
- [@ohmyzsh](https://x.com/ohmyzsh) on X (formerly Twitter). You should follow it.
|
2021-04-26 01:21:31 +08:00
|
|
|
|
- [Facebook](https://www.facebook.com/Oh-My-Zsh-296616263819290/) poke us.
|
2020-09-26 19:05:31 +08:00
|
|
|
|
- [Instagram](https://www.instagram.com/_ohmyzsh/) tag us in your post showing Oh My Zsh!
|
|
|
|
|
- [Discord](https://discord.gg/ohmyzsh) to chat with us!
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
|
|
|
|
## Merchandise
|
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
We have
|
|
|
|
|
[stickers, shirts, and coffee mugs available](https://shop.planetargon.com/collections/oh-my-zsh?utm_source=github)
|
|
|
|
|
for you to show off your love of Oh My Zsh. Again, you will become the talk of the town!
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2015-03-01 13:36:33 +08:00
|
|
|
|
## License
|
2015-02-22 08:07:27 +08:00
|
|
|
|
|
2016-05-12 19:52:13 +08:00
|
|
|
|
Oh My Zsh is released under the [MIT license](LICENSE.txt).
|
2016-09-20 10:40:38 +08:00
|
|
|
|
|
|
|
|
|
## About Planet Argon
|
|
|
|
|
|
2017-11-01 21:21:07 +08:00
|
|
|
|
![Planet Argon](https://pa-github-assets.s3.amazonaws.com/PARGON_logo_digital_COL-small.jpg)
|
2016-09-20 10:40:38 +08:00
|
|
|
|
|
2024-10-09 02:13:28 +08:00
|
|
|
|
Oh My Zsh was started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a
|
|
|
|
|
[Ruby on Rails development agency](https://www.planetargon.com/services/ruby-on-rails-development?utm_source=github).
|
|
|
|
|
Check out our [other open source projects](https://www.planetargon.com/open-source?utm_source=github).
|