この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
以前からzshは使いやすいと聞いていましたが、bashに慣れていた私には関係ないと目を逸らし続けてました。
軽い気持ちで触った結果、補完機能が強力さに惚れ込みましてこれまで付き合ってきたbashとお別れしました。
zsh導入で何をしたか?
今回zshに求めたものはbashで使える機能+αでした。
そこで、手軽に使うためにもzshrcをさっくり作ってみました。
- zshrc作成、変更
- ログインシェルを変更
実際にやった作業
zshrc作成、変更
- bashrcと同様にzshrcを作成します。
% touch .zshrc
- zshrcに調べた設定項目を入れる
# 環境変数
export LANG=ja_JP.UTF-8
# 補完機能有効化
autoload -Uz compinit
compinit
# 色使用有効化
autoload -Uz colors
colors
# cd後、自動的にpushdする
setopt auto_pushd
# 重複したディレクトリを追加しない
setopt pushd_ignore_dups
HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000
# 日本語ファイル名を表示可能にする
setopt print_eight_bit
# beepを無効
setopt no_beep
# Ctrl+Dでzshを終了しない
setopt ignore_eof
# '#'以降をコメントとして扱う
setopt interactive_comments
# プロンプト
PROMPT="%{${fg[green]}%}[%n@%m]%{${reset_color}%} %~
%# "
# エイリアス
alias la='ls -a'
alias ll='ls -l'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias grep='grep --color=auto'
#同時に起動したzshの間でヒストリを共有する
setopt share_history
# 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups
# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space
# ヒストリに保存するときに余分なスペースを削除する
setopt hist_reduce_blanks
# awscli補完機能有効化
source '/usr/local/bin/aws_zsh_completer.sh'
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash
# ファイル名の展開でディレクトリにマッチした場合 末尾に / を付加
setopt mark_dirs
# 補完候補一覧でファイルの種別を識別マーク表示 (訳注:ls -F の記号)
setopt list_types
# 補完キー連打で順に補完候補を自動で補完
setopt auto_menu
# カッコの対応などを自動的に補完
setopt auto_param_keys
# 語の途中でもカーソル位置で補完
setopt complete_in_word
zstyle ':completion:*' use-cache true
zstyle ':completion:*:default' menu select=2
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
- 設定の確認
% source ~/.zshrc
ログインシェル変更
Macでのログインシェル変更方法は以下のコマンドで出来ます。
% chsh -s /bin/zsh
Changing shell for yoshie.kento.
Password for yoshie.kento:
最後に
30分で非常に使いやすい環境が出来ました。
awscliの補完機能の指定が少し変わるかなと懸念しましたが、すんなり設定もわかったので時間がかかりませんでした。
bashの時よりも補完ワードが強調されるので見やすくなったかなと思います。
まだzshを使われていない方がいらっしゃったら、ぜひ触ってみて頂くことをおすすめします。
ありがとうございました、bashさん。よろしくお願いします、zsh先生。