これは ターミナル環境大掃除2021 の1発目です。

動機

  • zsh の設定を Git 管理したい
    • 当たり前ですわな
    • ということで、プラグイン情報をコード管理できる必要がある
  • インストールしたコマンド類も同様に管理したい
    • 後からインストールしたツールに依存した設定をしてしまうとマシン移行で詰むので
    • まあ設定は極力コードに残したいですねという話である

作業

やっていくぞ。

まず zplug を入れていく。

現時点での Requirements は以下のようになっているので、手元の環境を確認してみよう。

  • zsh: version 4.3.9 or higher
  • git: version 1.7 or higher
  • awk: An AWK variant that’s not mawk
( '_') < zsh --version
zsh 5.4.2 (x86_64-ubuntu-linux-gnu)

( '_') < git --version
git version 2.17.1

 ~
( '_') < awk --version
GNU Awk 4.1.4, API: 1.1 (GNU MPFR 4.0.1, GNU MP 6.1.2)
Copyright (C) 1989, 1991-2016 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.

クリアしていそうな感じがある。awk ってデフォルトで入ってるんだね。

ということで、 the best way とされているインストールスクリプト実行による導入を敢行する。

( '_') < curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh
 ✔  Checking if your zsh version is newer than 4.1.9 [SUCCEEDED]
 ✔  Installing zplug to /home/zoshigayan/.zplug [SUCCEEDED]
 All processes are successfully completed 🎉
 For more information, see http://zplug.sh 🌺
 Enjoy zplug!

いけたっぽい。上記のスクリプト実行によって ~/.zplug ディレクトリ以下に zplug がインストールされたので、こやつを .zshrc から source で参照したのちにプラグインの情報を書いていく。最終的に以下のような感じでうまく動いた。

+ # plugins
+ source $HOME/.zplug/init.zsh

+ # RPROMPT (Git)
+ zplug "olivierverdier/zsh-git-prompt", use:zshrc.sh

+ # Install plugins if there are plugins that have not been installed
+ if ! zplug check --verbose; then
+     printf "Install? [y/N]: "
+     if read -q; then
+         echo; zplug install
+     fi
+ fi

+ # Then, source plugins and add commands to $PATH
+ zplug load --verbose

  # PROMPT
  NEWLINE=$'\n'
  PROMPT="${NEWLINE}%K{13} %F{0}%~%f %k${NEWLINE}%F{4}( '_') < %f"
- source $HOME/dotfiles/zsh/zsh-git-prompt/zshrc.sh
  RPROMPT='$(git_super_status)'

最初 zplug "<user>/<repo>" だけ指定しても動かなかったので焦ったけど、zplug はデフォルトで *.zsh という glob で source するファイルを検索するらしいので、zsh-git-prompt のように利用するファイル名が異なるものは use タグを使用して指定する必要があるとのこと。そして zplug 自身も zplug で管理できる らしく、社用 PC への移植が楽になりそうな気がしたので設定しておいた。

zsh の plugin 管理ツールだと思ってたけど README 曰く GitHub Releases から各種コマンドの bin を取ってくることもできるらしく、何もかもをここで管理したい欲求に駆られるも一旦ステイする。ひとまずプラグインがそのまま commit されてる情弱 repo を脱却できたので、これでよしとしようではないか。

余談

「全部を zplug で管理すると重すぎて使い物にならなくなる」という話は聞いたことあるし、既になんとなくその片鱗は見え始めている。が、困ったときまで困りたくないので、困ったら困ることにして今は先に進む。YAGNI の精神である。

  • zplug を導入する
  • anyenv から asdf に乗り換える
  • peco から fzf に乗り換える
  • ripgrep を導入する
  • g エイリアスに登録されている移動コマンドをキーバインド化する
  • Dein から vim-plug に乗り換える
  • Defx から fern に乗り換える
  • ソースコード全文検索を ripgrep でできるようにする
  • ファイル名指定移動を Denite から fzf に移行する
  • Denite を消す
  • nvim-typescript 突然死の真相を探る
  • Rails 開発を便利にする何かを眺める
  • Tmux の設定を見直す
  • Zsh 初期設定を理解する
  • GitHub CLI を導入する
  • 補完について思いを馳せる

続く

次回、anyenvからasdfに乗り換える