preztoからstarship + zinit に乗り換え
動機
これを見て可愛い見た目だなあと思ってpreztoからstarshipに乗り換えたくなった。おしゃれdriven
半年以上前にこの記事を読んでわけもわからずpreztoを導入したせいでzshのターミナル周りの設定がどうなっているのかをもう一度理解したかったのもある
preztoの削除
参考
preztoを導入していると、zsh周りの設定ファイルは~/.zprezto
以下にある。.zshrc
や.zshenv
などはhome直下にあるように見えるが、~/.zprezto/runcoms
以下の各ファイルへのシンボリックリンクが張られているだけ
starship, zinitを導入するにあたってはそれらを削除する
zsh関連ファイルについて
preztoにより作成されていたzsh周りの設定ファイルは以下の通り
- zshrc
- zshenv
- zprofile
- zlogin
- zlogout
この記事によると基本いじるのは.zshrc
だけで良さそう
理由メモ
shellを使うタイミングは3パターン
- ログインシェル
- 普段ターミナルを立ち上げる時に使っている
- インタラクティブシェル
- ターミナルを立ち上げたあと、コマンドラインで
bash
とかzsh
とか打って立ち上がるやつ - ログイン自体はしていない
- ターミナルを立ち上げたあと、コマンドラインで
- シェルスクリプト
- ファイルにシェルスクリプトを書いて実行するときにshebangで指定されてるshellが使われるときのイメージかな
- 違かったら教えてください
.zshrc
で設定した内容(pathの設定やいろんなソフトウェアの初期化など)は1,2のタイミングで読み込まれる。対して例えば.zprofile
は1でのみ読み込まれるという違いがある。
他のファイルも同様にして、微妙に違いがあるが、.zshenv
や.zlogin
はその影響範囲や他のファイルとの役割の混同などで紛らわしいため、基本.zshrc
で事足りる。
byebye prezto
一応バックアップを取っておく
cd ~
mkdir .zsh_backup
cp -r ~/.zprezto/* ~/.zsh_backup
そのあとzprezto周りの全削除
rm -rf ~/.zprezto ~/.zlogin ~/.zlogout ~/.zpreztorc ~/.zprofile ~/.zshenv ~/.zshrc
必要な設定ファイルだけ残しておく
zshrc
は前からpathの設定などを書いていたから復活させる
cp ~/zsh_backup/runcoms/.zshrc ~/.zshrc
zinitの導入
install手順など上に従う
参考
install
sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh)"
このコマンドで~/.zinit/bin
が生成され、~/.zshrc
も更新される。
source ~/.zshrc
zinit self-update
~/.zshrc
ファイルのコマンドを実行し直す。zinitのupdateもする。
plugin
基本的なのを入れただけ
# ~/.zshrc
zinit light zsh-users/zsh-autosuggestions # suggestion
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=250" # suggestionの色変更
zinit light zdharma/fast-syntax-highlighting # シンタックスハイライト
zinit light zdharma/history-search-multi-word # ctrl+r でコマンド履歴を検索
suggestionの色が見づらかったからちょっと変更している。(参考)
starshipの導入
上のガイドに従う
参考
install
brew install starship
initialize
# ~/.zshrc
eval "$(starship init zsh)"
configuration
~/.config/starship.toml
ファイルを用意
mkdir -p ~/.config && touch ~/.config/starship.toml
この記事を参考に、改行や文字、conda環境の表示をしてくれるよう設定
# ~/.config/starship.toml
# シェルプロンプトの間に空行を挿入します。
add_newline = true
# ファイルをスキャンする際のタイムアウト時間
scan_timeout = 10
# 記号の設定
[character]
success_symbol = "[▶](bold green)" # コマンド成功時
error_symbol = "[▶](bold red)" # コマンド失敗時
# conda環境の表示
[conda]
format = "[$symbol$environment](dimmed green) "
ignore_base = false # base環境も表示させたい
なお、conda自身のプロンプト修飾子が邪魔になる(プロンプトの前に白文字で(base)って出る)場合は、conda config --set changeps1 False
で抑制が必要
theme, fontの導入
参考
参考記事通り、テーマはdracula, フォントはHackGenNerd Consoleを使用
- dracula
- HackGenNerd Console