だぐざの大釜

データサイエンス他いろいろ学んだ備忘録

私が考えた最強のシェルスクリプト設定(zshの設定)

目的

コマンド入力をマウスを使用せずキーボードだけでできるように、シェルスクリプトの設定(主にzshの設定)をカスタマイズする

動作環境

maxOS Monterey(M1)

概要

  1. Homebrewのインストール
  2. iTerm2のインストールと設定
  3. Zshのインストール
  4. Zinitでプラグインをインストールする
  5. さらにカスタマイズする

完成した.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

参考) Zinitでターミナルをカスタマイズする

プラグインをインストールする

次のプラグインを使用します。

プラグイン 概要 参考記事
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'

コメント

職場の人に色々と教えてもらいました。ありがとうございます!みなさん一押しの便利設定を教えてください!