.zshrc
macOSの標準のターミナルを可能な限り便利に使いたいのでいろいろカスタマイズします。
求める機能
- 自動で
.nvmrc
でNodeJSのバージョンを合わせる - 自動で
.env
で仮想環境に移行する - Figの補完が効く
- Gitの補完が効く
- 現在のディレクトリの位置がわかる
今回の導入方法ではVSCodeで直接ディレクトリをひらいても仮想環境が適用されるので便利です。
導入
Fig, rbenv, nvmはHomebrewからインストールする。
Rubyを使わないならrbenv, ruby-buildに関しては不要。
brew install nvm rbenv ruby-build figmkdir ~/.zshcd ~/.zshcurl -o git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.shcurl -o git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bashcurl -o _git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
できたら~/.zshrc
を編集する。
# Fig[[ -f "$HOME/.fig/shell/zshrc.pre.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.pre.zsh"
# GITsource ~/.zsh/git-prompt.shfpath=(~/.zsh $fpath)zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bashautoload -Uz compinit && compinit
GIT_PS1_SHOWDIRTYSTATE=trueGIT_PS1_SHOWUNTRACKEDFILES=trueGIT_PS1_SHOWSTASHSTATE=trueGIT_PS1_SHOWUPSTREAM=auto
setopt PROMPT_SUBST ; PS1='%F{green}devonly@TKG%f: %F{cyan}%c%f %F{red}$(__git_ps1 "(%s)")%f\$ '
# NVMexport NVM_DIR="$HOME/.nvm"[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
# Load NVMautoload -U add-zsh-hookload-nvmrc() { if [[ -f .nvmrc && -r .nvmrc ]]; then nvm use elif [[ $(nvm version) != $(nvm version default) ]]; then echo "Reverting to nvm default version" nvm use default fi}add-zsh-hook chpwd load-nvmrcload-nvmrc
# Load VENVautoload -U add-zsh-hookload-pyenv() { if [[ -r .venv ]]; then source .venv/bin/activate elif [[ -n "$VIRTUAL_ENV" && $PWD != ${VIRTUAL_ENV%/*} && $PWD != ${VIRTUAL_ENV%/*}/* ]]; then deactivate fi}add-zsh-hook chpwd load-pyenvload-pyenv
# Load Rbenv[[ -d ~/.rbenv ]] && \ export PATH=${HOME}/.rbenv/bin:${PATH} && \ eval "$(rbenv init -)"
# Fig[[ -f "$HOME/.fig/shell/zshrc.post.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.post.zsh"
最後にsource ~/.zshrc
として設定を読み込めば完了です。
autoload -U add-zsh-hook
についてはよくわかっていないので適当を書いているかもしれない…
記事は以上。