【.zshrc解説】コピペで簡単zshカスタマイズ【設定方法】

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。iQeda [@iQeeeda] です。

新しい PC が支給されたとき、新しい開発環境をつくったとき、
シェルの設定めんどくさい!コピペで速攻終わらせたいー!

そんなときが多々あるかと思います。

今回は zsh をより便利にするための .zhsrc 設定を公開します!
僕なりの設定ですが、汎用性があってほぼコピペでいけるので参考にしてみてください。

シェルと .zshenv についてはこちらの記事で解説しています。

.zshrc とは?

zsh をログインシェル、またはインタラクティブシェルとして起動する場合、
そのとき読み込まれる個人設定ファイルが ~/.zshrc です。

この .zshrc の中に zsh のカスタマイズ設定を書いていきます。

.zshrc の rc の意味ってなに?

余談ですが zshrc の rcRun Command の略です。

zsh に限らず、何らかのファイル名に rc が含まれていたら、
「コマンド入力について設定しているファイルなのかな?」と想像すればいいと思います。

【注意】zsh フレームワーク「oh-my-zsh」 導入済みの方

oh-my-zsh がインストールされた環境には既に ~/.zshrc が作成されています。
コメントアウト部分を無視すれば、おおよそ以下のような初期設定になっています。

export ZSH=$HOME/.oh-my-zsh

ZSH_THEME="robbyrussell"
plugins=(git)
source $ZSH/oh-my-zsh.sh

この設定を今から上書きします。心配な方は ~/.zshrc のバックアップをとっておいてください。

~/.zshrc 設定例

Mac 環境で oh-my-zsh を使っている場合の ~/.zshrc 設定例を公開します。
※ 他の環境でも大体この設定でいけると思います。

別に oh-my-zsh を使ってなくても問題ありません。
その場合、 ##### zsh の設定 ##### となっているところからコピペ開始してください。

~/.zshrc が存在しない場合は作成してください。

##### oh-my-zsh の設定 #####

export ZSH=$HOME/.oh-my-zsh

# たとえば oh-my-zsh テーマカラーを robbyrussell から変更する場合
ZSH_THEME="candy"

# oh my zsh で利用するプラグインを指定
plugins=(git zsh-syntax-highlighting zsh-completions)

# oh-my-zsh に変更を適用
source $ZSH/oh-my-zsh.sh

##### zsh の設定 #####

# すっきりしたプロンプト表示 (不要ならコメントアウト)
PROMPT='%~ %# '

# zsh-completions の設定。コマンド補完機能
autoload -U compinit && compinit -u

# git のカラー表示
git config --global color.ui auto 

# エイリアス
alias his='history'
alias ...='cd ../..'
alias ....='cd ../../..'
alias e="emacs"
alias v='vim'
alias vi='vim'
alias mss='mysql.server start'
alias so='source'
alias be='bundle exec'
alias ber='bundle exec ruby'

# エイリアス: git 系
alias g='git'
alias gs='git status'
alias gb='git branch'
alias gc='git checkout'
alias gct='git commit'
alias gg='git grep'
alias ga='git add'
alias gd='git diff'
alias gl='git log'
alias gcma='git checkout master'
alias gfu='git fetch upstream'
alias gfo='git fetch origin'
alias gmod='git merge origin/develop'
alias gmud='git merge upstream/develop'
alias gmom='git merge origin/master'
alias gcm='git commit -m'
alias gpo='git push origin'
alias gpom='git push origin master'
alias gst='git stash'
alias gsl='git stash list'
alias gsu='git stash -u'
alias gsp='git stash pop'

# 色を使用出来るようにする
autoload -Uz colors
colors

# 日本語ファイル名を表示可能にする
setopt print_eight_bit

# cd なしでもディレクトリ移動
setopt auto_cd

# ビープ音の停止
setopt no_beep

# ビープ音の停止(補完時)
setopt nolistbeep

# cd [TAB] で以前移動したディレクトリを表示
setopt auto_pushd

# ヒストリ (履歴) を保存、数を増やす
HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000

# 同時に起動した zsh の間でヒストリを共有する
setopt share_history

# 直前と同じコマンドの場合はヒストリに追加しない
setopt hist_ignore_dups

# 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups

# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space

# ヒストリに保存するときに余分なスペースを削除する
setopt hist_reduce_blanks

# キーバインディングを emacs 風にする
bindkey -d
bindkey -e

# 補完で小文字でも大文字にマッチさせる
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

# [TAB] でパス名の補完候補を表示したあと、
# 続けて [TAB] を押すと候補からパス名を選択できるようになる
# 候補を選ぶには [TAB] か Ctrl-N,B,F,P
zstyle ':completion:*:default' menu select=1

# コマンドのスペルを訂正する
setopt correct

# cd した先のディレクトリをディレクトリスタックに追加する
# cd [TAB] でディレクトリのヒストリが表示されるので、選択して移動できる
# ※ ディレクトリスタック: 今までに行ったディレクトリのヒストリのこと
setopt auto_pushd

# pushd したとき、ディレクトリがすでにスタックに含まれていればスタックに追加しない
setopt pushd_ignore_dups

# 拡張 glob を有効にする
# 拡張 glob を有効にすると # ~ ^ もパターンとして扱われる
# glob: パス名にマッチするワイルドカードパターンのこと
# ※ たとえば mv hoge.* ~/dir というコマンドにおける * のこと
setopt extended_glob

# 単語の一部として扱われる文字のセットを指定する
# ここではデフォルトのセットから / を抜いたものにしている
# ※ たとえば Ctrl-W でカーソル前の1単語を削除したとき / までで削除が止まる
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

自分なりにカスタマイズしてみたいんだけど?

はっきりいって初心者が 0 から設定するのは難しいです。
ある程度つかってみて、もし不満がでてきたら少しずつ修正を入れる感じがいいと思います。

最初はエイリアスから作ってみよう

慣れないうちはエイリアス (ショートカットコマンド) から作ってみましょう。

たとえば僕は alias ...='cd ../..' というエイリアスを定義しています。
これは ... とコマンドを打つと、2 つ前の階層のディレクトリに移動するショートカットです。

参考

こちらの記事に zsh 外部プラグイン情報がまとまっていたのでご紹介します。
ひと手間かけて利用してみるのもいいかもしれませんね。

関連記事

zsh ロードマップ

zsh ライブラリ

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

カテゴリ「Develop」の最新記事

最新記事

コメント

コメントを残す

*