zsh 設定

bashからzshに乗り換え.


ログインシェルをzsh

1. 何よりもまずインストール

$ sudo apt-get install zsh
(略)


2. zshのパスを確認

$ which zsh
/usr/bin/zsh


3. 実際にシェルを変更
パスワードを聞かれるので入れて,その後上のパスを入力

$ chsh
(略)


4. 一度起動
(多分対話モードでの)初回起動時に設定ファイル作成するかを聞かれるので作成する


5. 再起動
ログオフだけでも良さそう・・・


設定

.zshrc

# emacs スタイルのキーバインド
bindkey -e

# 文字コードの設定
export LANG=ja_JP.UTF-8

# alias
alias ls='ls --color=auto -F'
alias ll='ls -l'
alias la='ls -A'
alias lla='ls -lA'
alias grep='grep --color=auto'
alias rm='rm -i'
alias gd='dirs -v; echo -n "select number: "; read newdir; cd +"$newdir"'
alias sudo='sudo '
alias man='w3mman'
alias -g G='| grep'

# 補完設定
compdef _man w3mman
compdef _tex platex

# プロンプトの設定
autoload -U colors; colors
PROMPT=$'\n%{\e[1;32m%}%n@%m %{\e[1;33m%}%~\n%{\e[1;m%}%(!.#.$) '
SPROMPT="correct: %R -> %r ? "

# 履歴の保存場所
HISTFILE=~/.zsh_history

# メモリ内の履歴の数
HISTSIZE=10000

# 保存される履歴の数
SAVEHIST=100000

# 履歴ファイルに時刻を記録
setopt extended_history

# シェルのプロセスごとに履歴を共有
setopt share_history

# 複数の zsh を同時に使う時など history ファイルに上書きせず追加
setopt append_history

# コマンドが入力されるとすぐに追加
setopt inc_append_history

# 画面を超える時にのみ補完するか質問を行う
LISTMAX=0

# 補完の利用設定
autoload -U compinit; compinit

# sudo でも補完の対象
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

# 補完時に大文字小文字を区別しない
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

# pushd時に同一ディレクトリを除去
setopt pushd_ignore_dups

# 履歴検索
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end

# 補完候補が複数ある時に、一覧表示
setopt auto_list

# auto_list の補完候補一覧で、ls -F のようにファイルの種別をマーク表示
setopt list_types

# 先方予測
# autoload -U predict-on; predict-on

# 補完キー(Tab, Ctrl+i) で順に補完候補を自動で補完
#setopt auto_menu

# rm * 実行前に確認
setopt rmstar_wait

# カッコの対応などを自動的に補完
setopt auto_param_keys

# ディレクトリ名の補完時に / を付加
setopt auto_param_slash

# リダイレクトで上書きすることを許可しない
setopt no_beep

# cdで自動的にpushd
setopt auto_pushd

# ビープ音を鳴らさない
setopt no_beep

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

# 重複したヒストリは追加しない
setopt hist_ignore_all_dups

# ヒストリを呼び出してから実行する間に一旦編集できる状態になる
setopt hist_verify

# zedエディタのロード
#autoload zed

# コマンドラインの引数で longoption の = 以降でも補完
setopt magic_equal_subst

# ファイル名の展開でディレクトリにマッチした場合末尾に / を付加
setopt mark_dirs

# 8 ビット目を通すようになり、日本語のファイル名を表示可能
setopt print_eight_bit

# Ctrl+wで、直前の/までを削除する
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

# ファイルリスト補完でもlsと同様に色をつける
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

# current directoryが変更された時に実行する関数
function chpwd()
{
	# ファイル一覧を表示
	ls;
	# screenタイトルをカレントディレクトリに
	[ "$TERM" = "screen" ] && \
		echo -ne "\ek`pwd | sed -n 's/^.*\/\(.*\)$/\1\//p'`\e\\"
}

# コマンド実行前に実行する関数
#function preexec() { }

# ディレクトリ名だけでディレクトリの移動をする
setopt auto_cd

# C-s, C-qを無効にする
setopt no_flow_control

# ^Dでログアウトしない
#setopt ignore_eof

# 補完時にスペルチェック
#setopt auto_correct

# Return を押す度にスペルチェック
#setopt correct
#setopt correct_all

# 空白から始まるコマンドは履歴に残さない
setopt hist_ignore_space

# ローカルのセッティングファイルを読み込む
[ -f ~/.zshrc.local ] && . ~/.zshrc.local

# screen 起動
[ "$TERM" != "screen" ] && which screen >/dev/null && \
	exec screen -S main #-xRR