【zsh】zinitでプラグイン管理
2021.10.28
2024.03.24
開発環境
zinitzsh
はじめに
zshでのプラグイン管理でzinitを利用する方法について紹介していきます。
zinitはできることが多いので、今回はとりあえず使い始めてみることを目標に解説します。
zinitとは
zinit
とは、zshのプラグインマネージャーです。要は、プラグインを管理するツールになります。
zinit
は速いみたいで、oh-my-zshやpreztoのzshフレームワークもサポートしているようです。
zshのプラグインマネージャーは以下のようなものがあります。
スターだけでみるとzplug
が多いですが、zinit
の方がコミット数が多かったり、最近のコミットがあったりします。(2021/10/27時点)
インストール
まずはzinit
をインストールします。
1sh -c "$(curl -fsSL https://git.io/zinit-install)"
インストールができると~/.zshrc
に下記の内容が追記されます。
1### Added by Zinit's installer │
2if [[ ! -f $HOME/.zinit/bin/zinit.zsh ]]; then │
3 print -P "%F{33}▓▒░ %F{220}Installing %F{33}DHARMA%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f" │
4 command mkdir -p "$HOME/.zinit" && command chmod g-rwX "$HOME/.zinit" │
5 command git clone https://github.com/zdharma-continuum/zinit "$HOME/.zinit/bin" && \ │
6 print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \ │
7 print -P "%F{160}▓▒░ The clone has failed.%f%b" │
8fi │
9 │
10source "$HOME/.zinit/bin/zinit.zsh" │
11autoload -Uz _zinit │
12(( ${+_comps} )) && _comps[zinit]=_zinit │
13### End of Zinit's installer chunk
~/.zshrc
を読み込んで、zinit
をリロードします。
1source ~/.zshrc
2
3zinit self-update
これでzinit
を利用する準備は完了です。
プラグインの追加
プラグインの追加には2つの方法があります。
load
:トラッキングありlight
:トラッキングなし(高速)
基本は以下のようにlight
を使えばいいと思います。
1zinit light zsh-users/zsh-completions
2zinit light zsh-users/zsh-autosuggestions
zinit iceとは?
zinit ice
は、次に続くzinit
コマンドのオプション的なものを指定できます。
以下のように後続のコマンドの動作を指定します。飲み物に入れる「氷」のように追加されるものという意味でice
だそうです。
1zinit ice wait lucid
2zinit light zsh-users/zsh-completions
wait
で遅延ロードし、lucid
でロードした時にコンソールに情報が出力されるのを省略させています。
ice
でさまざまな挙動を制御できます。
Alternate Ice Syntax - Zinit Wiki
設定紹介
参考程度に現状の私の.zshrc
を記載しておきます。
1# ---------------------------------------------------------
2# Enable Powerlevel10k
3# ---------------------------------------------------------
4
5# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
6# Initialization code that may require console input (password prompts, [y/n]
7# confirmations, etc.) must go above this block; everything else may go below.
8if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
9 source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
10fi
11
12# ---------------------------------------------------------
13# Zinit's installer
14# ---------------------------------------------------------
15if [[ ! -f $HOME/.zinit/bin/zinit.zsh ]]; then
16 print -P "%F{33}▓▒░ %F{220}Installing %F{33}DHARMA%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
17 command mkdir -p "$HOME/.zinit" && command chmod g-rwX "$HOME/.zinit"
18 command git clone https://github.com/zdharma-continuum/zinit "$HOME/.zinit/bin" && \
19 print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \
20 print -P "%F{160}▓▒░ The clone has failed.%f%b"
21fi
22
23source "$HOME/.zinit/bin/zinit.zsh"
24autoload -Uz _zinit
25(( ${+_comps} )) && _comps[zinit]=_zinit
26
27# ---------------------------------------------------------
28# plugin list
29# ---------------------------------------------------------
30
31zinit ice wait lucid
32zinit light zsh-users/zsh-completions # 補完
33zinit ice wait lucid
34zinit light zsh-users/zsh-autosuggestions # 補完
35zinit ice wait lucid
36zinit light zsh-users/zsh-syntax-highlighting
37zinit ice wait lucid
38zinit light chrissicool/zsh-256color
39zinit ice depth=1
40zinit light romkatv/powerlevel10k
41
42# ---------------------------------------------------------
43# basic
44# ---------------------------------------------------------
45
46# 履歴保存管理
47HISTFILE=$ZDOTDIR/.zsh-history
48HISTSIZE=100000
49SAVEHIST=1000000
50
51# 他のzshと履歴を共有
52setopt inc_append_history
53setopt share_history
54
55# ---------------------------------------------------------
56# alias
57# ---------------------------------------------------------
58
59alias ls='ls -G'
60alias python="python3"
61alias pip="pip3"
62
63# ---------------------------------------------------------
64# prompt
65# ---------------------------------------------------------
66
67# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
68[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
69
70# ---------------------------------------------------------
71# completion
72# ---------------------------------------------------------
73
74# コマンド補完
75autoload -Uz compinit && compinit
76
77# 小文字でも大文字にマッチ
78zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
79
80# 補完候補をTabや矢印で選択可能
81zstyle ':completion:*:default' menu select=1
82
83# ---------------------------------------------------------
84# hight-light
85# ---------------------------------------------------------
86
87# サジェストの色変更
88ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=244"
89
90# lsコマンドで色分けする
91zstyle ':completion:*' list-colors $LSCOLORS
92
93# ---------------------------------------------------------
94# peco
95# ---------------------------------------------------------
96
97# コマンド履歴検索 ctrl+r
98function peco-history-selection() {
99 BUFFER=`history -n 1 | tac | awk '!a[$0]++' | peco`
100 CURSOR=$#BUFFER
101 zle reset-prompt
102}
103zle -N peco-history-selection
104bindkey '^R' peco-history-selection
105
106# コマンド履歴からディレクトリ検索・移動 ctrl+e
107if [[ -n $(echo ${^fpath}/chpwd_recent_dirs(N)) && -n $(echo ${^fpath}/cdr(N)) ]]; then
108 autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
109 add-zsh-hook chpwd chpwd_recent_dirs
110 zstyle ':completion:*' recent-dirs-insert both
111 zstyle ':chpwd:*' recent-dirs-default true
112 zstyle ':chpwd:*' recent-dirs-max 1000
113 zstyle ':chpwd:*' recent-dirs-file "$HOME/.cache/chpwd-recent-dirs"
114fi
115function peco-cdr () {
116 local selected_dir="$(cdr -l | sed 's/^[0-9]* *//' | peco)"
117 if [ -n "$selected_dir" ]; then
118 BUFFER="cd ${selected_dir}"
119 zle accept-line
120 fi
121}
122zle -N peco-cdr
123bindkey '^E' peco-cdr
124
125# カレントディレクトリ以下のディレクトリ検索・移動 ctrl+x
126function find_cd() {
127 local selected_dir=$(find . -type d | peco)
128 if [ -n "$selected_dir" ]; then
129 BUFFER="cd ${selected_dir}"
130 zle accept-line
131 fi
132}
133zle -N find_cd
134bindkey '^X' find_cd
135
まとめ
zinit
でzshプラグインの管理ができる
参考
- zdharma/zinit: Flexible and fast Zsh plugin manager with clean fpath, reports, completion management, Turbo, annexes, services, packages.
- Zinit Wiki
- zdharma-continuum/zinit: 🌻 Flexible and fast ZSH plugin manager
- https://github.com/zdharma has suddenly disappeared. I haven't found any statement from Sebastian as to why. Sebastian Gniazdowski is the author of well know projects such as
zinit
andfast-syntax-highlighting
and regular contributor to this community. Anyone have any background about why? : zsh
Share
関連記事
【Tmuxinator】tmuxのいつもの環境をコマンド1つで作る
2022.09.08
Backstageでホームをカスタマイズ
2024.04.28
gitコマンドのエイリアスを設定する
2022.04.20
【YAMLフォーマッター】yamlfmt使ってみる
2023.08.25