Zinitでターミナルをカスタマイズする
Zinitとは
zinitとは、zshのプラグインマネージャーです。
Zinitのいいところ
めっちゃ速い
Zshの起動が50〜80%速くなるみたいです。
他の有名なプラグインマネージャーとの速度比較した図がこちら
zinit#zinit
機能が豊富
Oh-My-ZshやPreztoに対応しており、フレームワークに依存していません。
プラグイン、ライブラリ、テーマを楽に制作することができます。
他にもいろんなメリットがあると思うので、気になる方はGithubをご覧ください。
Zinitのインストール
こちらのコマンドを実行します。
$ sh -c "$(curl -fsSL https://git.io/zinit-install)"
$ source ~/.zshrc
$ zinit self-update
すると~/.local/share/zinit/zinit.git
にZinitがインストールされて、~/.zshrc
に下のようなコードが追加されます。下の3行はzinit
コマンドを補完する設定です。
### Added by Zinit's installer
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
print -P "%F{33} %F{34}Installation successful.%f%b" || \
print -P "%F{160} The clone has failed.%f%b"
fi
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
### End of Zinit's installer chunk
使い方
Zinitはload
かlight
を使ってプラグインを読み込むことができます。
zinit load <repo/plugin>
zinit light <repo/plugin>
-
load
はレポート(トラッキング)を有効にします。zinit report
で一覧表示したり、zinit unload
でプラグインを無効化することができます。 -
light
はレポート(トラッキング)を無効にします。
また以下のようにsnippet
を使って読み込むこともできます。
zinit snippet https://gist.githubusercontent.com/hightemp/5071909/raw/
基本的なカスタマイズ
ここからは自分好みにカスタマイズしていきます。
プロンプトテーマの変更
デフォルトのプロンプトだと見づらいので、人気のあるpureを入れておきましょう。
# Load the pure theme, with zsh-async library that's bundled with it.
zinit ice pick"async.zsh" src"pure.zsh"
zinit light sindresorhus/pure
個人的にpureの配色が好きじゃなかったのでIcebergというカラースキーマを使っています。(icebergをちょっとだけカスタマイズして使っています)
設定の仕方は、こちらの記事を参考に。
Mac のターミナルに Iceberg を設定して見やすくする
シンタックスハイライト
-
zsh-syntax-highlighting
シンタックスハイライトを設定できます。
zinit light zsh-users/zsh-syntax-highlighting
入力補完①
zinit light zsh-users/zsh-autosuggestions
ターミナルのコマンド履歴に基づいてコマンド候補を表示、入力補完してくれます。
薄ーくコマンドの候補表示されています。
入力補完②
zinit light zsh-users/zsh-completions
コマンドやファイル名の入力中に「Tabキー」を押すことで、入力候補一覧を表示してくれます。
コマンド履歴を検索
-
history-search-multi-word
コマンド履歴を一覧表示できます。
zinit light zdharma/history-search-multi-word
history
コマンドと似てますが、こちらは選択肢から選べたりするのでより便利です。
「Ctrl+R」で一覧が表示されます。
ここまでの.zshrc
とりあえずここまで全部やったら、以下のような.zshrc
ができていると思います。(僕の個人的な設定も含まれてます。)
# ----------------------------
# basic
# ----------------------------
# コマンド履歴の管理
HISTFILE=~/.zsh_history
export HISTSIZE=1000
export SAVEHIST=10000
# ----------------------------
# Added by Zinit's installer
# ----------------------------
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
print -P "%F{33} %F{34}Installation successful.%f%b" || \
print -P "%F{160} The clone has failed.%f%b"
fi
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# ----------------------------
# Zinit plugins
# ----------------------------
# Load the pure theme, with zsh-async library that's bundled with it.
zinit ice pick"async.zsh" src"pure.zsh"
zinit light sindresorhus/pure
# シンタックスハイライト
zinit light zsh-users/zsh-syntax-highlighting
# 入力補完
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-completions
# コマンド履歴を検索
zinit light zdharma/history-search-multi-word
# ----------------------------
# alias
# ----------------------------
alias g="git"
alias gb="git branch"
alias gs="git switch"
alias gco="git checkout"
alias r="bin/rails"
alias rs="bin/rails server"
alias rc="bin/rails console"
alias rg="bin/rails generate"
alias rdbc="bin/rails db:create"
alias rdbm="bin/rails db:migrate"
もっとカスタマイズしたい
ここからは随時更新する予定です。
peco
色々調べてみるとpecoというものを発見しました。
こいつを入れてあげると、
- ディレクトリの移動履歴を表示、移動
- コマンドの実行履歴を表示、実行
- Gitブランチを表示、切替え
といったことが可能になるみたいです。
毎回cd
コマンドでディレクトリ移動することとは、おさらばできそうです。
pecoの導入
Githubにしたがって、brew
でインストールします。
$ brew install peco
次にpecoをより便利に扱えるanyframeをzinit経由で読み込みます。
zinit light mollifier/anyframe
これでセットアップは完了です。
pecoのカスタマイズ
ショートカットキーは自分の使いやすいコマンドに変更可能です。
詳しくはanyframeを参照ください。
ディレクトリの移動履歴を表示
bindkey '^xb' anyframe-widget-cdr
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
「Ctrl+x -> b」でディレクトリの移動履歴を表示してくれます。
選択するとそこへ移動してくれます。
コマンドの実行履歴を表示
bindkey '^xr' anyframe-widget-execute-history
「Ctrl+x -> r」でコマンドの実行履歴を表示してくれます。
history-search-multi-wordの強化版ですね。
Gitブランチを表示して切替え
bindkey '^x^b' anyframe-widget-checkout-git-branch
「Ctrl+x -> Ctrl+b」でGitブランチを表示して切替えができます。
Discussion