Catalinaのzshカスタマイズ備忘録


MacBook Air(2020)を買いました

2012 MidのMacBook Air、なぜか"p"だけ打てなくなったり。「もう使用の限界。気力もなくなり」(千代の富士) MacBook Air(2020)に買い替えました。※嬉しくてただの自慢ですのでスルーしてください。

Terminalがbashからzshに

MacBook Air(2020)はmacOS Catalina(10.15)となり、Terminalの標準shellがbashからzshに変更されました。
macOS 10.15 Catalina でターミナルのやつが zsh になった

で、こちら⬇
お前らのターミナルはダサい
を読んで大いに刺激をうけ、zshのカスタマイズに挑んだ次第であります。
以下ほぼこのQiitaのまんまですが、ところどころCatalinaで補完した内容となっております。

デフォルトのTerminal


うん…だめだわ。
とりあえずbrewは使えるようにしといてね。

まずはフォントRictyから

参考:Homebrewを使ってRictyをインストール
Rictyの他に、派生フォントRicty Discordもインストールされます。

$ brew tap sanemat/font
$ brew install ricty
$ cp -f /usr/local/opt/ricty/share/fonts/Ricty*.ttf ~/Library/Fonts/
$ fc-cache -vf

ついでにRicty Diminishedも
参考:HomebrewでRicty Diminishedをインストールする方法

$ brew tap homebrew/cask-fonts
$ brew cask install font-ricty-diminished

次にTerminalのテーマIceberg

http://cocopon.github.io/iceberg.vim/

のっけからサイトがカッチョいい!

こちらIcebergの一番下にある「Iceberg for macOS」の[Download]をクリックしてTerminalのテーマをダウンロード。

zipを解凍すると"iceberg.terminal"というTerminalテーマが出てくるので、Terminalの環境設定から読み込む。正直これで起動させてもあんまりパッとしません。後からわかりますから。

で、フォントをRictyにします。DiminishedでもDiscordでも、お好きなのをどうぞ。

zshのフレームワークPreztoのインストール

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

ユーザーディレクトリ以下に.zpreztoディレクトリができる。
次にシンボリックリンクを色々と張る。

$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

ls -laすると何やらzsh系の設定がzprezto以下にシンボリックリンクを張っているのがわかります。

lrwxr-xr-x   1 zooiiooz  staff     39  4 28 21:53 .zlogin -> /Users/zooiiooz/.zprezto/runcoms/zlogin
lrwxr-xr-x   1 zooiiooz  staff     40  4 28 21:53 .zlogout -> /Users/zooiiooz/.zprezto/runcoms/zlogout
drwxr-xr-x  13 zooiiooz  staff    416  4 28 21:48 .zprezto
lrwxr-xr-x   1 zooiiooz  staff     42  4 28 21:53 .zpreztorc -> /Users/zooiiooz/.zprezto/runcoms/zpreztorc
lrwxr-xr-x   1 zooiiooz  staff     41  4 28 21:53 .zprofile -> /Users/zooiiooz/.zprezto/runcoms/zprofile
-rw-------   1 zooiiooz  staff    459  4 28 21:27 .zsh_history
lrwxr-xr-x   1 zooiiooz  staff     39  4 28 21:53 .zshenv -> /Users/zooiiooz/.zprezto/runcoms/zshenv
lrwxr-xr-x   1 zooiiooz  staff     38  4 28 21:53 .zshrc -> /Users/zooiiooz/.zprezto/runcoms/zshrc

sorinテーマ

一旦ログインして再度ターミナルを開くとデフォルトテーマのsorinが適用されています。

3色3連プロンプト!!!
やだ…カッコいい…。

Basicでもこうなの!?

不要なホスト名、ユーザー名が出てこないし、表示具合もいい感じ。Tabを押しなっせ。ディレクトリの補完も良い。

テーマをsorinからpureに変更してみる

デフォルトテーマはsorinになっています。

#現在のテーマの確認
$ prompt -c
Current prompt theme is:
  sorin

他のテーマも見てみましょう。

-lオプション
$ prompt -l
Currently available prompt themes:
agnoster cloud damoekri giddie kylewest minimal nicoulaj paradox peepcode powerlevel10k powerlevel9k powerline pure skwp smiley sorin steeef adam1 adam2 bart bigfade clint default elite2 elite fade fire off oliver pws redhat restore suse walters zefram

何やら色々ありますが、pureに変更してみます。
エディタで.zshrcを編集します。

$ nano .zshrc

以下を追加します。

.zshrc
# Customize to your needs...
autoload -Uz promptinit
promptinit
prompt pure #ここがテーマ名になります。

変更後はshellの設定を再読み込み

exec $SHELL -l

pureテーマのプロンプトは2行となっており、非常に見やすい。
しかも、gitの状態もわかるようになっています。

しかし、sorinの3連プロンプトも捨てがたい…。ぐぬぬ。
じゃあ、pureの"❯"を"❯❯❯"にしてみますか!

pureの設定ファイルのカスタマイズ

sorinの3連プロンプト

まずsorinの3連プロンプトの秘密に迫ってみましょう。
sorinの設定ファイルは
~/.zprezto/modules/prompt/functions/prompt_sorin_setup
にあります。
この中にある、「zstyle ':prezto:module:editor:info:keymap:primary'」の
「format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b'」が3連プロンプトの部分になります。
%B〜%bで囲まれた部分が太字(Bold)、%F{1}%F{3}%F{2}は色の指定です。

prompt_sorin_setup
  # Set editor-info parameters.
  zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b'
  zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b'
  zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{3}♺%f'
  zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{2}❮%F{3}❮%F{1}❮%f%b'
pureの設定ファイル

pureの設定ファイルは
~/.zprezto/modules/prompt/functions/prompt_pure_setup
ですが、
~/.zprezto/modules/prompt/external/pure/pure.zsh
にシンボリックリンクが張られています。
元ファイルはこちらなので、こちらをバックアップしてから編集します。

~/.zprezto/modules/prompt/external/pure
$ cp pure.zsh pure.zsh_bak
$ nano pure.zsh

さてプロンプト❯は何箇所あるでしょうか。

$ cat pure.zsh_bak | grep ❯
    prompt_pure_state[prompt]=${PURE_PROMPT_SYMBOL:-}
    prompt_pure_state[prompt]=${${KEYMAP/vicmd/${PURE_PROMPT_VICMD_SYMBOL:-}}/(main|viins)/${PURE_PROMPT_SYMBOL:-}}
        prompt   "${PURE_PROMPT_SYMBOL:-}"

"PURE_PROMPT_SYMBOL:-❯"
というのが3箇所ありますね。
これを
"PURE_PROMPT_SYMBOL:-%B%F{1}❯%F{3}❯%F{2}❯%f%b"
に一気に変換します。
nanoだと^W + ^Rで。
3箇所置換が終わったら保存終了してshellを再起動

$ exec $SHELL -l


3色3連プロンプトのpureになってますね!

※カスタマイズ

syntax-highlightingとautosuggestionsのmoduleを有効にしてみる。
.zpreztorcを編集します。
以下を必ずpromptより前に持ってくる。
'syntax-highlighting' \
'autosuggestions' \

.zpreztorc
# Set the Prezto modules to load (browse modules).
# The order matters.
zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'syntax-highlighting' \
  'autosuggestions' \
  'prompt'