zshへの移行

zsh 最強説

特に理由はありませんが、知り合いがzsh最強説を強く主張するので zshに移行してみました。

zsh

zsh

zshのインストール

macOSではHomebrewをインストールしていれば、簡単にzshのインストールが可能です。

以下は、関連するツールもまとめて導入しています。

$ brew install --without-etcdir zsh
$ brew install zsh-autosuggestions zsh-completions zsh-syntax-highlighting colordiff reattach-to-user-namespace

zsh だけ、 without-etcdir を指定しているのは、勝手にパスを書き換えてしまわない ためです。(詳細は、 「 Mac標準のbashからzshに変えた時のメモ 」を参照)

oh-my-zshのインストール

zsh上でのテーマなどを扱える oh-my-zshをインストールします。

$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

テーマは Vimもターミナルも Gruvboxを使っているので、以下のテーマを 設定しました。

設定などなど

標準のシェルをbashからzshに切り替えます。いくつかやり方がありますが、macOS 「設定」から「ユーザーとグループ」を使うのが一番簡単です。

「ユーザーとグループ」を開くと左下の鍵のマークをクリックして管理者パスワード を入力して変更を許可します。次にユーザーを選択して Ctrl + クリックで「詳細 オプション」を選択します。ログインシェルの指定があるので、 /usr/local/bin/zsh を指定します。

次に、 .zprofile の設定です。

# 補完機能
autoload -U compinit
compinit

# prompt
PROMPT='%m:%c %n$ '

# コマンド履歴
HISTFILE=~/.zsh_history
HISTSIZE=6000000
SAVEHIST=6000000
setopt hist_ignore_dups     # ignore duplication command history list
setopt share_history        # share command history data

# コマンド履歴検索
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end

# alias
alias diff="coloddiff"

次に、 .zshrc の設定です。 注意点は、 zshを先に書いたような導入をすると、 /usr/local/bin にパスが通っていないので、追加する必要があります。

# パスの設定
path=(
    /usr/local/bin
    $path
)


# Path to your oh-my-zsh installation.
export ZSH=/Users/yostos/.oh-my-zsh

# テーマの設定
ZSH_THEME="gruvbox-powerline"
POWERLINE_HIDE_GIT_PROMPT_STATUS=false
ZSH_POWERLINE_SHOW_USER=false
ZSH_POWERLINE_SHOW_IP=false
# ZSH_POWERLINE_SHOW_TIME=true
# ZSH_POWERLINE_SINGLE_LINE=true
# ZSH_POWERLINE_SHOW_GIT_STATUS=true
# ZSH_POWERLINE_SHOW_GIT_BRAHCH_ONLY=true
# ZSH_POWERLINE_SHOW_RETURN_CODE=true
ZSH_POWERLINE_SHOW_OS=true
ZSH_POWERLINE_DIRECTORY_DEPTH=2



# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
  brew brew-cask cdd gem git rbenv vagrant
)

source $ZSH/oh-my-zsh.sh

export XDG_CONFIG_HOME=~/.config

# Location
export TZ="Asia/Tokyo"
export LANG=ja_JP.UTF-8
# 日本語ファイル名を表示可能にする
setopt print_eight_bit

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

# ビープ音の停止
setopt no_beep

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

# cd -<tab>で以前移動したディレクトリを表示
setopt auto_pushd

# Ruby
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

# Python
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

# Node
export PATH=$HOME/.nodebrew/current/bin:$PATH
# Initialization for FDK command line tools.Mon Jan 15 20:05:04 2018
FDK_EXE="/Users/yostos/bin/FDK/Tools/osx"
PATH=${PATH}:"/Users/yostos/bin/FDK/Tools/osx"
export PATH
export FDK_EXE


export VIMCONFIG=~/.config/nvim
export VIMDATA=~/.local/share/nvim
# Use Neovim as "preferred editor"
export VISUAL=nvim
# Use Neovim  instead of Vim or Vi
alias vim=nvim
alias vi=nvim

# FZFのファイル一覧取得コマンドに RipGrepを指定
# RipGrepは.gitignoreを結果に反映してくれる。
export FZF_DEFAULT_COMMAND='rg --files'

zshで幸せになれたか?

bash-completion を使っていたので劇的に変わったわけではないのですが、 それでも TABをタイプするとヌルヌルとコマンドやオプションの 候補を表示してくれたり補完してくれたりするので生産性は上がります。

また、テーマも簡単に切り替えが可能で、bashでも使っていた gitのステータス とブランチの表示など標準で用意されているので見栄えは随分とよくなります。

プラグインの管理もできるようなので、これから本格的にbashから移行して 環境を整えていこうかなと思います。


Comments !