跳到主要内容

♻️ 迁移

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
提示

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.

有些主题可能需要额外的配置,它可以从主题配置文件中确定。

  • 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 基础知识

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:

从 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.

提示

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

信息

For the location: refer selection of files

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

Zplug 基础知识

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