zshの初期設定

Page content

ちょっとしたashの設定です。

Homebrewからインストール

brew install zsh

シェル一覧リストを追加

sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"

インストールしたzshに設定

chsh -s /usr/local/bin/zsh
Changing shell for ruedap.
Password for ruedap: パスワードを入力する

zsh-completionsのインストール

補完機能の強化

brew install zsh-completions

~./zshrc

# zsh-completions(補完機能)の設定
if type brew &>/dev/null; then
 FPATH=$(brew --prefix)/share/zsh-completions:$FPATH

 autoload -Uz compinit
 compinit
fi

zsh-syntax-highlighting のインストール

コマンドにシンタックスハイライトをつける

brew install zsh-syntax-highlighting

~./zshrc

source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

zsh-autosuggestions のインストール

ターミナルのコマンド履歴に基づいてコマンド候補を表示、入力補完もしてくれる。

brew install zsh-autosuggestions

~./zshrc

 source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh

色を使用出来るようにする

~./zshrc

autoload -Uz colors && colors

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

~./zshrc

setopt print_eight_bit

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

~./zshrc

setopt auto_cd

ビープ音の停止

~./zshrc

setopt no_beep

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

~./zshrc

setopt nolistbeep

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

~./zshrc

setopt auto_pushd

ヒストリ (履歴) を保存、数を増やす

~./zshrc

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

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

~./zshrc

setopt share_history

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

~./zshrc

setopt hist_ignore_dups

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

~./zshrc

setopt hist_ignore_all_dups

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

~./zshrc

setopt hist_ignore_space

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

~./zshrc

setopt hist_reduce_blanks

補完で小文字でも大文字にマッチさせる

~./zshrc

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

パス名の補完候補時パス名を選択

[TAB] でパス名の補完候補を表示したあと、 続けて [TAB] を押すと候補からパス名を選択できるようになる 候補を選ぶには [TAB] か Ctrl-N,B,F,P

~./zshrc

zstyle ':completion:*:default' menu select=1

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

~./zshrc

setopt correct

cd した先のディレクトリをディレクトリスタックに追加する

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

~./zshrc

setopt auto_pushd

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

~./zshrc

setopt pushd_ignore_dups

拡張 glob を有効にする

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

setopt extended_glob

単語の一部として扱われる文字のセットを指定する

単語の一部として扱われる文字のセットを指定する ここではデフォルトのセットから / を抜いたものにしている ※ たとえば Ctrl-W でカーソル前の1単語を削除したとき / までで削除が止まる ~./zshrc

WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

コマンド実行結果のあとに空行を挿入する

~/.zshrc

add_newline() {
  if [[ -z $PS1_NEWLINE_LOGIN ]]; then
    PS1_NEWLINE_LOGIN=true
  else
    printf '\n'
  fi
}
precmd() { add_newline }