ゴール
zsh?
そもそもシェルとは
シェル (shell) はオペレーティングシステム (OS) のユーザーのためにインタフェースを提供するソフトウェアであり、カーネルのサービスへのアクセスを提供する。
「シェル」フリー百科事典 ウィキペディア日本語版
zshはbashより優秀と聞いた
- コマンドオプションの補完
- 端末間の履歴共有
導入
環境
macOS Catalina
※macOS Catalinaからデフォルトシェルがzshに変更された
1. zshのインストール
$ /bin/zsh --version # デフォルトで入っているzshのバージョン
$ brew info zsh # Homebrewでインストールできるzshのバージョン
# Homebrewで入れる
$ brew install zsh
# 補完を強力にしてくれてるプラグインも
$ brew install zsh-completions zsh-autosuggestions zsh-syntax-highlighting
2. ログインシェルをzshにする
# 現在のログインシェルを確認
$ echo $SHELL
Homebrewでインストールしたzshをシェル一覧に登録する
sudo vi /etc/shells
で以下を追記
/usr/local/bin/zsh # which zsh で場所を確認しておく
# ログインシェル変更
$ chsh -s /usr/local/bin/zsh
3. 設定ファイルの作成
vi ~/.zshrc
で設定ファイルを作成して以下を記述
※設定ファイルは他にも.zprofileなどもあるが、.zshrcへの記述がいいという記事が多いので
# 環境変数
export LANG=ja_JP.UTF-8
export LSCOLORS=gxfxcxdxbxegedabagacad
# ヒストリの設定
HISTFILE=~/.zsh_history
HISTSIZE=30000
SAVEHIST=30000
# 直前のコマンドの重複を削除
setopt hist_ignore_dups
# 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups
# 同時に起動したzshの間でヒストリを共有
setopt share_history
# 補完機能を有効にする
autoload -Uz compinit
compinit -u
if [ -e /usr/local/share/zsh-completions ]; then
fpath=(/usr/local/share/zsh-completions $fpath)
fi
# 補完で小文字でも大文字にマッチさせる
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
# 補完候補を詰めて表示
setopt list_packed
# 補完候補一覧をカラー表示
zstyle ':completion:*' list-colors ''
# プラグインを有効化
source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# コマンドのスペルを訂正
setopt correct
# ビープ音を鳴らさない
setopt no_beep
# prompt
autoload -Uz vcs_info
setopt prompt_subst
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr "%F{magenta}!"
zstyle ':vcs_info:git:*' unstagedstr "%F{yellow}+"
zstyle ':vcs_info:*' formats "%F{cyan}%c%u[%b]%f"
zstyle ':vcs_info:*' actionformats '[%b|%a]'
precmd() { vcs_info }
PROMPT='%T %~ %F{magenta}$%f '
RPROMPT='${vcs_info_msg_0_}'
# alias
alias ls='ls -aF'
alias ll='ls -l'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'
alias cat='cat -n'
alias less='less -NM'
export CLICOLOR=1
export LSCOLORS=DxGxcxdxCxegedabagacad
4. 設定反映
使ってみて良かったこと
コマンドオプションの補完がいい
あれ、あのオプションなんだったっけって時にすぐ確認できる
導入の過程で設定ファイルに関しても色々と勉強になった
参考
たいへん参考になりました
ありがとうございます
補足
- pecoを使って端末操作を爆速にするをやると生産性爆上がりします
- oh-my-zshなどのフレームワークを使って設定するのもいいと思う
- fishもよさそう