♻️ Migration
Oh-My-Zsh
OMZ shorthand syntax
zi snippet <URL> # Raw syntax with URLzi snippet OMZ::<PATH> # Shorthand OMZ:: (http://github.com/ohmyzsh/ohmyzsh/raw/master/)zi snippet OMZL::<PATH> # Shorthand OMZ::lib (http://github.com/ohmyzsh/ohmyzsh/raw/master/lib)zi snippet OMZT::<PATH> # Shorthand OMZ::themes (http://github.com/ohmyzsh/ohmyzsh/raw/master/themes)zi snippet OMZP::<PATH> # Shorthand OMZ::plugins (http://github.com/ohmyzsh/ohmyzsh/raw/master/plugins)
OMZ library
Importing the clipboard and termsupport from the OMZ library example:
Raw syntax:
zi snippet https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/clipboard.zshzi snippet https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/termsupport.zsh
OMZ shorthand syntax:
zi snippet OMZ::lib/clipboard.zshzi snippet OMZ::lib/termsupport.zsh
OMZL shorthand syntax:
zi snippet OMZL::clipboard.zshzi snippet OMZL::termsupport.zsh
Example of more advanced, library loading using subversion:
if (( $+commands[svn] )) { sni=({git,theme-and-appearance,prompt_info_functions,history,completion,vcs_info}.zsh) zi is-snippet has'svn' for svn \ multisrc'${sni[*]}' pick'/dev/null' \ atinit'typeset -gx COMPLETION_WAITING_DOTS=true \ HISTSIZE=290000 SAVEHIST=290000 HISTFILE=${ZSH_CACHE_DIR}/.history;' \ OMZ::lib unset sni} else { +zi-message "{auto}Subversion not installed!"}
OMZ plugins
- plugins=(- git- dotenv- rake- rbenv- ruby-)+ zi snippet OMZP::git+ zi snippet OMZP::dotenv+ zi snippet OMZP::rake+ zi snippet OMZP::rbenv+ zi snippet OMZP::ruby
Example of more advanced, conditional turbo loading:
zi is-snippet wait lucid for \ atload"unalias grv g" \ OMZP::{git,sudo,encode64,extract} \ if'[[ -d /opt/google-cloud-sdk ]]' \ OMZP::gcloud \ if'[[ -f /etc/os-release ]] && source /etc/os-release && [[ "$ID" = arch ]]' \ OMZP::archlinux \ if'[[ -d ~/.nvm ]]' \ OMZP::nvm \ if'[[ -d ~/.ssh ]]' \ OMZP::ssh-agent \ if'[[ -d ~/.gnupg ]]' \ OMZP::gpg-agent \ if'[[ "$OSTYPE" = *-gnu ]]' \ OMZP::gnu-utils \ has'pip' \ OMZP::pip \ has'python' \ OMZP::python
Bundle the example above to a single file:
zi snippet <some/path/or/url/bundled-snippets.zsh
Use zi ice svn
if multiple files require an entire subdirectory.
zi ice svnzi snippet OMZP::gitfastzi ice svnzi snippet OMZP::osxzi ice svnzi snippet OMZP::history-substring-search
Use zi ice as"completion"
to directly add single file completion snippets.
zi ice as"completion"zi snippet OMZP::docker/_dockerzi ice as"completion"zi snippet OMZP::fd/_fdzi ice as"completion"zi snippet OMZP::ag/_ag
OMZ themes
Themes are stored in the themes
directory and loaded in the background with the simple syntax:
ZSH_THEME="robbyrussell"
However, Zi doesn't support the ZSH_THEME
variable natively.
To use themes created for OMZ requires loading shown below as it would be the same as OMZ does in the background.
Some themes may require additional configuration it can be determined from the theme configuration file.
- Load
git
library - Load the
git
plugin - Load library dependencies
- Enable
setopt prompt_subst
If any of the above are not in order or missing, the theme will break similar as shown below:
… $(build_prompt) …
If the Git
library is not loaded or loaded in the wrong order, then it may appear similar to the following:
........:1: command not found: git_prompt_status........:1: command not found: git_prompt_short_sha
If you encounter any issue with the theme, OMZ support libraries are to be loaded
If your theme isn't colored when it should, you will want to load
theme-and-appearance.zsh
If you encounter an error message similar to:
zsh: command not found: ruby_prompt_info
You need to load prompt_info_functions.zsh
All together it looks like this:
zi snippet OMZL::git.zshzi snippet OMZP::gitzi snippet OMZL::theme-and-appearance.zshzi snippet OMZL::prompt_info_functions.zsh
Then load the prompt:
setopt prompt_substzi snippet OMZT::robbyrussell
External theme sample: NicoSantangelo/Alpharized
Load with OMZ:
ZSH_THEME="alpharized"
Load git
library from OMZ:
zi snippet OMZL::git.zsh
Load git
plugin from OMZ:
zi snippet OMZP::gitzi cdclear -q
Then load the prompt:
setopt prompt_substzi light NicoSantangelo/Alpharized
Prezto
PZT shorthand syntax
zi snippet <URL> # Raw syntax with URLzi snippet PZT::<PATH> # Shorthand PZT:: (https://github.com/sorin-ionescu/prezto/tree/master/)zi snippet PZTM::<PATH> # Shorthand PZT::modules/ (https://github.com/sorin-ionescu/prezto/tree/master/modules/)
PZT modules
Importing the environment and terminal Prezto modules example:
Raw syntax
zi snippet https://github.com/sorin-ionescu/prezto/blob/master/modules/environment/init.zshzi snippet https://github.com/sorin-ionescu/prezto/blob/master/modules/terminal/init.zsh
PZT shorthand syntax:
zi snippet PZT::<PATH>zi snippet PZT::modules/environmentzi snippet PZT::modules/terminal
PZTM shorthand syntax:
zi snippet PZTM::<PATH>zi snippet PZTM::environmentzi snippet PZTM::terminal
Prezto modules:
- zstyle ':prezto:load' pmodule 'git'- zstyle ':prezto:load' pmodule 'environment' 'terminal'+ zi snippet PZTM::git+ zi is-snippet for PZTM::environment PZTM::terminal
Available Prezto modules:
Module name | Description |
---|---|
archive | Provides functions to list and extract archives. |
autosuggestions | Integrates zsh-autosuggestions plugin into Prezto. |
command-not-found | Loads the command-not-found tool on macOS or Debian-based distributions. |
completion | Sets TAB completion and provides additional completions from the zsh-completions . |
directory | Sets directory options and defines directory aliases. |
dnf | Defines dnf aliases. |
docker | Defines docker aliases and functions. |
dpkg | Defines dpkg aliases and functions. |
editor | Sets key bindings. |
emacs | Enables Emacs dependency management. |
environment | Sets general shell options and defines environment variables. |
fasd | Maintains a frequently used file and directory list for fast access. |
git | Enhances the Git by providing aliases, functions and by exposing repository status information to prompts. |
gnu-utility | Provides for the interactive use of GNU utilities on non-GNU systems. |
gpg | Provides for an easier use of GPG by setting up gpg-agent . |
haskell | Enables local Haskell package installation. |
helper | Provides helper functions for developing modules. |
history-substring-search | Integrates zsh-history-substring-search into Prezto. |
history | Sets history options and defines history aliases. |
homebrew | Defines Homebrew aliases. |
macports | Defines MacPorts aliases and adds MacPorts directories to path variables. |
node | Provides utility functions for Node.js and loads npm completion. |
ocaml | Initializes OCaml package management. |
osx | Defines macOS aliases and functions. |
pacman | Provides aliases and functions for the Pacman package manager and frontends. |
perl | Enables local Perl module installation on macOS and defines aliases. |
prompt | Loads prompt themes. |
python | Enables local Python and local Python package installation. |
rails | Defines Ruby on Rails aliases. |
rsync | Defines rsync aliases. |
ruby | Configures Ruby local gem installation, loads version managers, and defines aliases. |
screen | Defines GNU Screen aliases and provides for auto launching it at start-up. |
spectrum | Provides for easier use of 256 colors and effects. |
ssh | Provides for an easier use of SSH by setting up ssh-agent . |
syntax-highlighting | Integrates zsh-syntax-highlighting into Prezto. |
terminal | Sets terminal window and tab titles. |
tmux | Defines tmux aliases and provides for auto launching it at start-up. |
utility | Defines general aliases and functions. |
wakeonlan | This module provides a wrapper around the wakeonlan tool. |
yum | Defines yum aliases. |
Use zi ice svn
if multiple files require an entire subdirectory.
zi ice svnzi snippet PZTM::dockerzi ice svnzi snippet PZTM::git
Use zi ice as"null"
no *.plugin.zsh
, init.zsh
, *.zsh-theme*
files exist in module directory.
zi ice svn as"null"zi snippet PZTM::archive
Use zi ice atclone"git clone <repo> <location>"
if module have external module.
zi ice svn blockf \ atclone"git clone --recursive https://github.com/zsh-users/zsh-completions.git external"zi snippet PZTM::completion
Use blockf
to prevent any unnecessary additions to fpath
, as Zi manages fpath
.
What is zstyle
?
- Official (zsh.sourceforge.net): zsh/zutil
- StackExchange: What does
zstyle
do?
Available
Zgen
Load OMZ library
- zgen oh-my-zsh+ zi snippet OMZL::<ANY OF THEM>
Load OMZ plugins
- zgen oh-my-zsh <PATH>+ zi snippet OMZP::<PATH>
Load Prezto modules
- zgen prezto <module name>+ zi snippet PZTM::<module name>
Load repositories as prezto plugins:
- zgen pmodule <reponame> <branch>+ zi ice ver"<branch>"+ zi load <repo/plugin>
Summarized Zgen
For the location
: refer src, pick, multisrc ice-modifier.
- zgen load <repo> [location] [branch]+ zi ice ver"[branch]"+ zi load <repo>
Zplug Basics
- zplug <repo/plugin>, tag1:<option1>, tag2:<option2>+ zi ice tag1"<option1>" tag2"<option2>"+ zi load <repo/plugin>
Tag comparison
as
=>as
use
=>pick
,src
,multisrc
ignore
=> Nonefrom
=>from
at
=>ver
rename-to
=>mv
,cp
dir
=> Selection(pick
, …) with renameif
=>if
hook-build
=>atclone
,atpull
hook-load
=>atload
frozen
=> Noneon
=> Nonedefer
=>wait
lazy
=>autoload
depth
=>depth