メインコンテンツまでスキップ

♻️ Migration

Oh-My-Zsh

OMZ Shorthand Syntax

~/.zshrc
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 sample:

Raw Syntax:

~/.zshrc
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:

~/.zshrc
zi snippet OMZ::lib/clipboard.zshzi snippet OMZ::lib/termsupport.zsh

OMZL Shorthand Syntax:

~/.zshrc
zi snippet OMZL::clipboard.zshzi snippet OMZL::termsupport.zsh

OMZ Plugins

~/.zshrc
- 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:

~/.zshrc
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
tip

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.

~/.zshrc
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.

~/.zshrc
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. All and loaded in the background. with the simple syntax:

~/.zshrc
ZSH_THEME="robbyrussell"

However, ZI doesn't support the ZSH_THEME variable natively.

To use themes created for OMZ, it 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 Git plugin
  • Load library dependencies
  • Enable setopt promptsubst

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:

~/.zshrc
zi snippet OMZL::git.zshzi snippet OMZP::gitzi snippet OMZL::theme-and-appearance.zshzi snippet OMZL::prompt_info_functions.zsh# Other libraries that might be neededzi cdclear -q

Then load the prompt:

setopt promptsubstzi snippet OMZT::robbyrussell

External theme sample: NicoSantangelo/Alpharized

Load with OMZ:

~/.zshrc
ZSH_THEME="alpharized"

Load with ZI:

~/.zshrc
zi snippet OMZL::git.zsh

Load Git plugin from OMZ:

~/.zshrc
zi snippet OMZP::gitzi cdclear -qsetopt promptsubstzi light NicoSantangelo/Alpharized

Prezto basics

Raw Syntax with URL:

~/.zshrc
zi snippet <URL>

Shorthand PZT: https://github.com/sorin-ionescu/prezto/tree/master/

~/.zshrc
zi snippet PZT::<PATH>

Shorthand PZT/modules:

~/.zshrc
zi snippet PZTM::<PATH>

Prezto modules

Importing the environment and terminal Prezto Modules Sample:

Prezto Setting:

~/.zshrc
zstyle ':prezto:load' pmodule 'environment' 'terminal'

ZI Setting:

Import raw syntax from URL.

~/.zshrc
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:

~/.zshrc
zi snippet PZT::modules/environmentzi snippet PZT::modules/terminal

PZTM Shorthand Syntax:

~/.zshrc
zi snippet PZTM::environmentzi snippet PZTM::terminal

Use zi ice svn if multiple files require an entire subdirectory.

~/.zshrc
zi ice svnzi snippet PZTM::dockerzi ice svnzi snippet PZTM::git

Use zi ice as"null" if don't exist *.plugin.zsh, init.zsh, *.zsh-theme* files in module.

~/.zshrc
zi ice svn as"null"zi snippet PZTM::archive

Use zi ice atclone"git clone <repo> <location>" if module have external module.

~/.zshrc
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.

tip

What is zstyle?

Zgen

Load OMZ library

~/.zshrc
- zgen oh-my-zsh+ zi snippet OMZL::<ANY OF THEM>

Load OMZ plugins

~/.zshrc
- zgen oh-my-zsh <PATH>+ zi snippet OMZP::<PATH>

Load Prezto modules

~/.zshrc
- zgen prezto+ zi snippet PZTM::<ANY FROM LIST BELOW>
  • environment
  • terminal
  • editor
  • history
  • directory
  • spectrum
  • utility
  • completion
  • prompt
~/.zshrc
- zgen prezto <modulename>+ zi snippet PZTM::<modulename>

Load repositories as prezto plugins:

~/.zshrc
- zgen pmodule <reponame> <branch>+ zi ice ver"<branch>"+ zi load <repo/plugin>

Summarized Zgen

info

For the location: refer selection of files

~/.zshrc
- zgen load <repo> [location] [branch]+ zi ice ver"[branch]"+ zi load <repo>

Zplug Basics

~/.zshrc
- 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 => None
  • from => from
  • at => ver
  • rename-to => mv, cp
  • dir => Selection(pick, …) with rename
  • if => if
  • hook-build => atclone, atpull
  • hook-load => atload
  • frozen => None
  • on => None
  • defer => wait
  • lazy => autoload
  • depth => depth