♻️ 迁移
Oh-My-Zsh
OMZ 简洁语法
zi snippet <URL> # Raw syntax with URL
zi 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 内置库
以下是从 OMZ 内置库中导入 clipboard 和 termsupport 的示例。
原始语法:
zi snippet https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/clipboard.zsh
zi snippet https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/termsupport.zsh
OMZ 简写法:
zi snippet OMZ::lib/clipboard.zsh
zi snippet OMZ::lib/termsupport.zsh
OMZL 简写法:
zi snippet OMZL::clipboard.zsh
zi 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 svn
zi snippet OMZP::gitfast
zi ice svn
zi snippet OMZP::osx
zi ice svn
zi 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/_docker
zi ice as"completion"
zi snippet OMZP::fd/_fd
zi 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.
有些主题可能需要额外的配置,它可以从主题配置文件中确定。
- 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.zsh
zi snippet OMZP::git
zi snippet OMZL::theme-and-appearance.zsh
zi snippet OMZL::prompt_info_functions.zsh
Then load the prompt:
setopt prompt_subst
zi 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::git
zi cdclear -q
Then load the prompt:
setopt prompt_subst
zi light NicoSantangelo/Alpharized
Prezto
PZT shorthand syntax
zi snippet <URL> # Raw syntax with URL
zi 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.zsh
zi snippet https://github.com/sorin-ionescu/prezto/blob/master/modules/terminal/init.zsh
PZT shorthand syntax:
zi snippet PZT::<PATH>
zi snippet PZT::modules/environment
zi snippet PZT::modules/terminal
PZTM shorthand syntax:
zi snippet PZTM::<PATH>
zi snippet PZTM::environment
zi 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 svn
zi snippet PZTM::docker
zi ice svn
zi 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::<任何项目>
加载 OMZ 插件
- zgen oh-my-zsh <路径>
+ zi snippet OMZP::<路径>
Load Prezto modules
- zgen prezto <模块名称>
+ zi snippet PZTM::<模块名称>
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 基础知识
- 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