私が考えた最強のシェルスクリプト設定(zshの設定)
目的
コマンド入力をマウスを使用せずキーボードだけでできるように、シェルスクリプトの設定(主にzshの設定)をカスタマイズする
動作環境
maxOS Monterey(M1)
概要
完成した.zshrcファイル
https://github.com/togeazm/.zshrc/blob/main/.zshrc
手順
1. Homebrewのインストール
詳しくは公式ホームページを参照してください。
既にインストール済みの場合はアップデートをしましょう。
$ brew upgrade
2. iTerm2のインストールと設定
HomebrewからiTerm2をインストールします。
$ brew install --cask iterm2
参考) iTerm2のおすすめ設定〜ターミナル作業を効率化する〜
3. Zshのインストール
※) M1 Macはデフォルトでzshになっているので不要かも
HomebrewからZshをインストールします。
$ brew install zsh
デフォルトのシェルをzshに変更します。
$ chsh -s /bin/zsh
変更を反映させるために、ターミナルを再起動して、再度ログインシェルを確認します。
4. Zinitのインストール
ここからが本題。便利なプラグインをインストールしてコマンド入力を快適するために、Zinitを使用します。次のコマンドを実行してインストールします。
$ sh -c "$(curl -fsSL https://git.io/zinit-install)" $ source ~/.zshrc $ zinit self-update
プラグインをインストールする
次のプラグインを使用します。
プラグイン | 概要 | 参考記事 |
---|---|---|
zsh-users/zsh-syntax-highlighting | シンタックスハイライト | |
zsh-users/zsh-autosuggestions | 入力補完 | |
zsh-users/zsh-completions | Tabキーで入力補完 | |
chrissicool/zsh-256color | 入力補完の色を薄くする | |
romkatv/powerlevel10k | Powerlevel10で見た目を変更する |
プラグインを読み込むために、.zshrcに書き込んでいきます。
zinit light chrissicool/zsh-256color zinit light romkatv/powerlevel10k zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-autosuggestions zinit light zsh-users/zsh-completions # Powerlevel10kの設定ファイルがない場合にのみ読み込む [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
見た目を変更する
先ほど登場したPowerlevel10kですが、使いこなすためには「Meslo Nerd Font」フォントをインストールが推奨されています。こちらからダウンロードします。
iTerms2を再起動すると、Powerlevel10kの設定が始まります。好きな見た目に変更してください。やり直したい場合は、p10k configure
でもう一度始めから設定できます。
参考) 【初心者向け】powerlevel10kでMacのターミナルをかっこ良く使いやすくする設定(powerlevel10K編)
5. さらにカスタマイズする
コマンド入力の補完
コマンド入力の補完機能をさらに便利にするために、次の設定を.zshrcに書き込みます。
# 入力補完機能の初期化 autoload -Uz compinit && compinit # 小文字でも大文字にマッチ zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # 補完候補をTabや矢印で選択可能 zstyle ':completion:*:default' menu select=1 # cdと同時にlsも行う function cd () { builtin cd "$@" && ls }
コマンド履歴検索(ctrl + r)
コマンド履歴を検索できるようにpeco
をインストールします。
$ brew install peco
もし、tacコマンドとawkコマンドがインストールされていない場合は、次のコマンドでインストールします。
$ brew install coreutils $ brew install gawk
次にctrl + r でコマンド履歴検索できるように、次の設定を.zshrcに書き込みます。
HISTFILE=$HOME/.zsh-history HISTSIZE=100000 SAVEHIST=1000000 function peco-history-selection() { BUFFER=`history -n 1 | tac | awk '!a[$0]++' | peco` CURSOR=$#BUFFER zle reset-prompt } zle -N peco-history-selection bindkey '^R' peco-history-selection
ディレクトリ移動履歴検索(ctrl + f)
ctrl + f で過去に移動したことのあるディレクトリを選択できるように、次の設定を.zshrcに書き込みます。
if [[ -n $(echo ${^fpath}/chpwd_recent_dirs(N)) && -n $(echo ${^fpath}/cdr(N)) ]]; then autoload -Uz chpwd_recent_dirs cdr add-zsh-hook add-zsh-hook chpwd chpwd_recent_dirs zstyle ':completion:*' recent-dirs-insert both zstyle ':chpwd:*' recent-dirs-default true zstyle ':chpwd:*' recent-dirs-max 1000 fi function peco-cdr () { local selected_dir="$(cdr -l | sed -E 's/^ *[0-9]+ +//' | peco --prompt="cdr >" --query "$LBUFFER")" if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi } zle -N peco-cdr bindkey '^f' peco-cdr
参考) zshとpecoでコマンド入力作業を快適に peco_cdr関数のlocal selected_dir変数内をカスタマイズしています。
gitリポジトリ検索・移動(ctrl + g)
リポジトリを管理するライブラリghq
をインストールします。
brew install ghq
詳しい設定は こちらを参照してください。
ctrl + g でgitリポジトリ検索・移動できるように、次の設定を.zshrcに書き込みます。
function peco-src () { local selected_dir=$(ghq list -p | peco --query "$LBUFFER") if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N peco-src bindkey '^g' peco-src
lsコマンドの出力
lsコマンドの出力をディレクトリやファイルの種類や権限に応じて色をつけるために、次の設定を.zshrcに書き込みます。
export LSCOLORS=gxfxcxdxbxegedabagacad alias ll='ls -lGF' alias la='ls -aGF' alias ls='ls -GF'
コメント
職場の人に色々と教えてもらいました。ありがとうございます!みなさん一押しの便利設定を教えてください!