zshの設定紹介
ふだん僕が使ってるzshの設定を紹介します。
学生時代からzsh使ってて特に気にせず使ってるのですが、新しいPCとかに移るとどんだけzshに助けられてたかを実感したりするわけです。
export WORDCHARS="*?_-.[]~=&;!#$%^(){}<>+"
単語境界にならない文字の設定。/が抜いてあるので、ファイルパスの入力中に^wで戻ると1ディレクトリ分戻れて便利。
autoload -U colors colors PS1="[%{${fg[green]}%}%t%{${fg[default]}%}]%# "
色を使えるようにする設定と、お気に入りの左prompt。時間が表示されます。
autoload -U compinit compinit
いろんな補完を有効にする設定。とりあえずこれ。
optionの補完とかもしてくれてすごく便利。
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
補完するときに小文字入力でも大文字にマッチするようにする。しばらくなしでやってみたけど、やっぱりこれがないとってなった。
SAVEHIST=100000 HISTSIZE=100000 HISTFILE=~/.histfile setopt SHARE_HISTORY setopt HIST_IGNORE_DUPS setopt HIST_REDUCE_BLANKS setopt HIST_NO_STORE if [ $UID = 0 ]; then unset HISTFILE SAVEHIST=0 fi
コマンドヒストリ関連の設定。
terminal複数開いてる場合とかにヒストリ共有されるのですごい便利。
DIRSTACKSIZE=10 setopt AUTO_PUSHD setopt PUSHD_IGNORE_DUPS setopt PUSHD_SILENT
cdで異動するときに勝手にpushdしたことにする設定。popdすれば前いたディレクトリに戻れる。便利。
bindkey "^P" history-beginning-search-backward bindkey "^N" history-beginning-search-forward
ヒストリサーチのキーバインド設定。
setopt prompt_subst autoload -Uz VCS_INFO_get_data_git; VCS_INFO_get_data_git 2> /dev/null function rprompt-git-current-branch { local name st color gitdir action if "$PWD" =~ '/\.git(/.*)?$' ; then return fi name=$(basename "`git symbolic-ref HEAD 2> /dev/null`") if -z $name ; then return fi gitdir=`git rev-parse --git-dir 2> /dev/null` action=`VCS_INFO_git_getaction "$gitdir"` && action="($action)" st=`git status 2> /dev/null` if -n `echo "$st" | grep "^nothing to"` ; then color=%F{green} elif -n `echo "$st" | grep "^nothing added"` ; then color=%F{yellow} elif -n `echo "$st" | grep "^# Untracked"` ; then color=%B%F{red} else color=%F{red} fi echo "$color$name$action%f%b" } RPS1='[`rprompt-git-current-branch`]'"[%{${fg[cyan]}%}%2~%{${fg[default]}%}]"
http://d.hatena.ne.jp/uasi/20091025/1256458798
こちらの記事かな。
gitのブランチ名を作業状態に応じた色で表示します。あと、今いるディレクトリをひとつ上の階層まで表示。お気に入りのプロンプト設定その2ですね。
setopt NULL_GLOB setopt EXTENDED_GLOB
glob関連の設定。EXTENDED_GLOB設定するとTabでglobが展開されます。
setopt MENU_COMPLETE setopt IGNORE_EOF setopt NO_CLOBBER setopt RM_STAR_WAIT
MENU_COMPLETE: Tab押したときに最初の補完候補をいきなり補完する。
IGNORE_EOF: ^dでターミナルを抜けない。
NO_CLOBBER: リダイレクトですでにファイルが存在する場合に上書きせずにエラーに
RM_STAR_WAIT: rm *実行時に確認される
setopt CORRECT_ALL alias mv='nocorrect mv' alias cp='nocorrect cp' alias vi='nocorrect vi' alias git='nocorrect git' alias touch='nocorrect touch' alias mkdir='nocorrect mkdir'
ファイル名が間違ってたときとかに修正する?って聞いてくれる。ちょっとやりすぎだった気がする。
ざっとこんな感じです。
ネット上にいくらでも落ちてるよなーと思いつつも、とりあえず。