kidoOooOoooOOom

IT系で開発やってます

zshの導入と初期設定

今までbashを使っていてそんなに不便に感じることはなかったけど、開発効率化のため zshに入れ替えてみることにした。
参考にしたのは WEB+DB PRESSzsh大活用の記事。コマンドを書き写すのがちょっと大変だったけれど、分かり易くて良い記事だと思った。

WEB+DB PRESS Vol.83

WEB+DB PRESS Vol.83

zshはMaxに既にインストールされていたが、一応 brew で最新版にアップデート

% brew install zsh

zshのパスを起動して、chshでログインシェルを変更する。

% which zsh
/bin/zsh
% chsh -s '/bin/zsh'

.bashrcの内容を .zshrcにコピーする。bash独自の設定はもちろん除くかpathを適宜変えておく。

デフォルトではプロンプトの表示が非常に寂しいので、ホスト名・ユーザ名・カレントディレクトリのパス・現在時間を表示されるように設定を .zshrcに追加する。

PROMPT="[%n%m](%*%) %~ %% "

zshは補完機能が bashより強力で、コマンドのオプションもtabで補完をしてくれる。強力な補完機能を有効にするため、下記の設定を追加する。

autoload -Uz compinit
compinit -u

zshはデフォルトでコマンド履歴が30件しか保存されず、これでは全然足りないので一気に増やしておく。

HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000


zshにはプラグイン機構があり、標準ではサポートしていない補完機能を更に拡張するプラグインもある。zsh-completionsをインストールし、

% brew install zsh-completions

.zshrcに設定する。

fpath=(/usr/local/share/zsh-completions(N-/) $fpath)


コマンドラインシンタックスハイライトをつけるプラグインも入れておく。
ソースがgitで管理されているため、一旦cloneした後、

% cd $HOME/.zsh/
% git clone git://github.com/zsh-users/zsh-syntax-highlighting

.zshrcに設定を追加する

[[ -f $HOME/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] && source $HOME/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh


とりあえずこのあたりの設定を追加した .zshrc は以下の通り。

# zsh
setopt SHARE_HISTORY
setopt AUTO_CD
setopt AUTO_PUSHD
setopt PUSHD_IGNORE_DUPS
setopt IGNORE_EOF
setopt NO_FLOW_CONTROL
setopt NO_BEEP

fpath=(/usr/local/share/zsh-completions(N-/) $fpath)

autoload -Uz compinit
compinit -u

zstyle ':completion:*:default' menu select=2
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

autoload -Uz select-word-style
select-word-style default
zstyle ':zle:**' word-chars " /=;@:{},|"
zstyle 'zle:*' word-style unspecified

PROMPT="[%n%m](%*%) %~ %% "

HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000

[[ -f $HOME/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] && source $HOME/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

オプションが補完されるのが嬉しい。
今後もzshカスタマイズして開発効率上げていこう。

zsh最強シェル入門

zsh最強シェル入門