zshrcの設定

発展途上。

# 環境変数LANGをja_JP.UTF-8へ設定
export LANG=ja_JP.UTF-8

# vimlikeキーバインド
bindkey -v

# auto complete
autoload -U compinit
compinit

# コマンド履歴
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
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
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end

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

# 移動したディレクトリを記録しておく。"cd -[Tab]"で移動履歴を一覧
setopt auto_pushd

# コマンド訂正
setopt correct

# タブキー連打で補完候補を順に表示
setopt auto_menu

# 補完候補一覧でファイルの種別を識別マーク表示(ls -F の記号)
setopt list_types

# パスの最後に付くスラッシュを自動的に削除しない
setopt noautoremoveslash

# = 以降でも補完できるようにする( --prefix=/usr 等の場合)
setopt magic_equal_subst

# 補完候補リストの日本語を正しく表示
setopt print_eight_bit

# 補完の時に大文字小文字を区別しない(但し、大文字を打った場合は小文字に変換しない)
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'


###############################################
# etc                                         
###############################################
setopt interactive_comments # コマンドラインで # 以降をコメントとする

setopt numeric_glob_sort     # 辞書順ではなく数値順でソート

setopt no_multios            # zshのリダイレクト機能を制限する

unsetopt promptcr            # 改行コードで終らない出力もちゃんと出力する
setopt ignore_eof           # Ctrl-dでログアウトしない

setopt notify                # バックグラウンドジョブが終了したら(プロンプトの表示を待たずに)すぐに知らせる

setopt rm_star_wait         # rm * を実行する前に確認
setopt rm_star_silent        # rm * を実行する前に確認しない
setopt no_clobber           # リダイレクトで上書きを禁止
unsetopt no_clobber          # リダイレクトで上書きを許可

setopt chase_links          # シンボリックリンクはリンク先のパスに変換してから実行
setopt print_exit_value     # 戻り値が 0 以外の場合終了コードを表示
setopt single_line_zle      # デフォルトの複数行コマンドライン編集ではなく、1行編集モードになる

# カーソル位置から前方削除(Ctrl-u)
bindkey '^U' backward-kill-line

# Ctrl-h で単語ごとに削除
bindkey "^h" backward-kill-word
# / を単語の一部とみなさない記号の環境変数から削除
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

#function chpwd() { ls }     # cd の後 ls も実行

###############################################
# エイリアス                                  
###############################################
# 補完される前にオリジナルのコマンドまで展開してチェックする
setopt complete_aliases

# エイリアス
alias ls='ls --color=auto'
alias h='history -E -32'
alias ll='ls -laF --color | more'


# 他の設定ファイルを読み込む
[ -f $HOME/.zshrc.mine ] && source $HOME/.zshrc.mine

# lsコマンドの補完候補にも色付き表示
eval `dircolors`
zstyle ':completion:*:default' list-colors ${LS_COLORS}
# kill の候補にも色付き表示
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([%0-9]#)*=0=01;31'

# 補完候補を詰めて表示する
setopt list_packed 

# ビープ音をならないように設定
setopt nolistbeep

# プロンプトの設定
case ${UID} in
0)
    PROMPT="%{%}%n%%%{%} "
    RPROMPT="[%~]"
    PROMPT2="%B%{%}%_#%{%}%b "
    SPROMPT="%B%{%}%r is correct? [n,y,a,e]:%{%}%b "
    [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
        PROMPT="%{%}${HOST%%.*} ${PROMPT}"
    ;;
*)
    PROMPT="%{%}%n%%%{%} "
    RPROMPT="[%~]"
    PROMPT2="%{%}%_%%%{%} "
    SPROMPT="%{%}%r is correct? [n,y,a,e]:%{%} "
    [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
        PROMPT="%{%}${HOST%%.*} ${PROMPT}"
    ;;
esac

# ターミナルタイトル
case "${TERM}" in
kterm*|xterm)
    precmd() {
        echo -ne "\033]0;${USER}@${HOST%%.*}:${PWD}\007"
    }
    ;;
esac