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

♻️ 移行

Oh-My-Zsh

OMZ のショートハンドシンタックス

~/.zshrc
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 ライブラリから クリップボードtermsupport をインポートする例:

生の構文:

~/.zshrc
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の省略記号構文:

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

OMZLの省略記号構文:

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

より高度な、Subversionを使ったライブラリの読み込みの例:

~/.zshrc
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 プラグイン

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

より高度な、条件付きターボローディングの例:

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

上の例を1つのファイルに束ねる:

zi snippet <some/path/or/url/bundled-snippets.zsh

複数のファイルがサブディレクトリ全体を必要とする場合は、 zi ice svn を使用します。

~/.zshrc
zi ice svn
zi snippet OMZP::gitfast

zi ice svn
zi snippet OMZP::osx

zi ice svn
zi snippet OMZP::history-substring-search

zi ice as "completion" を使用すると、単一ファイルの補完スニペットを直接追加することができます。

~/.zshrc
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 ディレクトリに保存され、簡単な構文でバックグラウンドで読み込まれます。

~/.zshrc
ZSH_THEME="robbyrussell"

ただし、Zi は ZSH_THEME 変数をネイティブにサポートしていません。

OMZ用に作成したテーマ を使用するには、バックグラウンドでOMZが行っているのと同じように、以下のような読み込みが必要です。

テーマによっては、追加の設定が必要な場合があります。それは、テーマ設定ファイルから判断できます。

  • git ライブラリを読み込む
  • git プラグインをロードする
  • ライブラリの依存関係を読み込む
  • setopt prompt_substを設定

上記のうち1つでも欠けていたり、順番が違っていたりすると、以下のようにテーマが壊れます。

$(build_prompt)

Git ライブラリがロードされていなかったり、ロードする順番を間違えたりすると、以下のような表示になることがあります。

........:1: command not found: git_prompt_status
........:1: command not found: git_prompt_short_sha

テーマで問題が発生した場合、OMZサポートライブラリを読み込む必要があります。

  • もし、あなたのテーマがあるべき時に色づけされていないなら、 theme-and-appearance.zshをロードしてください。

  • 次のようなエラーメッセージが表示された場合:

zsh: command not found: ruby_prompt_info

prompt_info_functions.zshを読み込む必要があります。

まとめると、次のようになります:

~/.zshrc
zi snippet OMZL::git.zsh
zi snippet OMZP::git
zi snippet OMZL::theme-and-appearance.zsh
zi snippet OMZL::prompt_info_functions.zsh

その後、プロンプトを読み込みます:

setopt prompt_subst
zi snippet OMZT::robbyrussell

外部テーマのサンプル: NicoSantangelo/Alpharized

OMZを読み込む:

~/.zshrc
ZSH_THEME="alpharized"

OMZから git ライブラリを読み込む:

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

OMZから git プラグインを読み込む:

~/.zshrc
zi snippet OMZP::git
zi cdclear -q

その後、プロンプトを読み込みます:

~/.zshrc
setopt prompt_subst
zi light NicoSantangelo/Alpharized

Prezto

PZT 省略記号構文

~/.zshrc
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 モジュール

Preztoのenvironmentterminal モジュールのインポートの例:

生の構文

~/.zshrc
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 省略記号構文:

~/.zshrc
zi snippet PZT::<PATH>
zi snippet PZT::modules/environment
zi snippet PZT::modules/terminal

PZTMの省略記号構文:

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

Preztoモジュール:

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

+ zi snippet PZTM::git
+ zi is-snippet for PZTM::environment PZTM::terminal

利用可能なPreztoモジュール:

モジュール名説明
archiveアーカイブの一覧表示や抽出を行う機能を提供します。
autosuggestionszsh-autosuggestions プラグインを Prezto に統合します。
command-not-foundMacOS または Debian ベースのディストリビューションで、 command-not-found ツールをロードします。
completionTAB 補完を設定し、 zsh-completionsから追加の補完を提供します。
directoryディレクトリのオプションを設定し、ディレクトリ・エイリアスを定義します。
dnfdnf エイリアスを定義します。
dockerdocker エイリアスや関数を定義しています。
dpkgdpkg エイリアスや関数を定義しています。
editorキーバインディングを設定します。
emacsEmacsの依存関係管理を有効にします。
environment一般的なシェルオプションを設定し、環境変数を定義します。
fasd頻繁に使用するファイルやディレクトリのリストを保持し、高速なアクセスを実現します。
git別名、関数、およびリポジトリー状況情報をプロンプトに表示することによって、 Git を拡張します。
gnu-utilityGNU 以外のシステムでの GNU ユーティリティのインタラクティブな使用を可能にします。
gpggpg-agentを設定することにより、GPGをより簡単に利用できるようにします。
haskellHaskell パッケージのローカルインストールを有効にします。
helperモジュール開発のためのヘルパー機能を提供します。
history-substring-searchZsh-history-substring-searchをPreztoに統合します。
historyヒストリーのオプションを設定し、ヒストリーのエイリアスを定義します。
homebrewHomebrewのエイリアスを定義します。
macportsMacPortsのエイリアスを定義し、MacPortsのディレクトリをpathに追加します。
nodeNode.js 用のユーティリティ関数を提供し、 npm 補完をロードします。
ocamlOCaml パッケージ管理を初期化します。
osxMacOSのエイリアスや関数を定義しています。
pacmanPacman パッケージマネージャとフロントエンドのためのエイリアスや関数を提供します。
perlMacOSでのPerlモジュールのローカルインストールを可能にし、エイリアスを定義します。
promptプロンプトのテーマを読み込みます。
pythonローカルPythonおよびローカルPythonパッケージのインストールを有効にします。
railsRuby on Railsのエイリアスを定義します。
rsyncrsync エイリアスを定義します。
rubyRubyのローカルgemのインストール、バージョンマネージャのロード、エイリアスの定義などを設定します。
screenGNU Screen のエイリアスを定義し、起動時に自動起動する機能を提供します。
spectrum256 colorやエフェクトをより使いやすくするための機能を提供します。
sshssh-agentを設定することにより、SSH をより簡単に使用できるようにします。
syntax-highlightingzsh-syntax-highlighting を Prezto に統合します。
terminalターミナルウィンドウとタブのタイトルを設定します。
tmuxtmux エイリアスを定義し、起動時に自動起動する機能を提供します。
utility一般的なエイリアスや関数を定義します。
wakeonlanこのモジュールは、wakeonlanツールのラッパーを提供します。
yumyum のエイリアスを定義します。

複数のファイルがサブディレクトリ全体を必要とする場合は、 zi ice svn を使用します。

~/.zshrc
zi ice svn
zi snippet PZTM::docker

zi ice svn
zi snippet PZTM::git

*.plugin.zsh, init.zsh, *.zsh-theme* ファイルがモジュールディレクトリに存在しない場合 zi ice as"null"を使用してください。

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

モジュールが外部モジュールを使用している場合は、 zi atclone"git clone <repo> <location>" を使用します。

~/.zshrc
zi ice svn blockf \
atclone"git clone --recursive https://github.com/zsh-users/zsh-completions.git external"
zi snippet PZTM::completion

Zi は fpathを管理しているので、 fpathへの不必要な追加を防ぐには blockf を使用してください。

tip

zstyleとは?

利用可能

Zgen

OMZライブラリの読み込み

~/.zshrc
- zgen oh-my-zsh

+ zi snippet OMZL::<ANY OF THEM>

OMZプラグインの読み込み

~/.zshrc
- zgen oh-my-zsh <PATH>

+ zi snippet OMZP::<PATH>

Prezto モジュールのロード

~/.zshrc
- zgen prezto <module name>

+ zi snippet PZTM::<module name>

リポジトリを prezto プラグインとして読み込む:

~/.zshrc
- zgen pmodule <reponame> <branch>

+ zi ice ver"<branch>"
+ zi load <repo/plugin>

Zgenの要約

info

locationについては、src、pick、multisrc ice修飾子を参照してください。

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

タグの比較

  • 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