zsh の設定 (.zshrc 編)
zsh は、 UNIX 系で利用されているシェルの 1 つです。 bash や tcsh などのシェルも高機能ですが、 zsh はさらに多くの機能を有しています。 bash や tcsh から乗り換えると操作になれるまで多少時間がかかりますが、 zsh の便利な機能になれてしまうと元のシェルに戻りたくなくなります。
以下に、私が利用している .zshrc の例を転載します。キーボードショートカットやオプションなどを忘れてしまうことが多いため、ファイルにはコメントを多めに記載しています。
今後、以下に掲載した .zshrc の内容を基に、 zsh の機能やオプションなどを解説するかも (需要は少なそう :-p) しれません。
########### .zshrc # chsh /bin/zsh # Esc-h : help # Esc-q : コマンドを一時的に待避 # Esc-a : カーソル位置や文字列をそのままにコマンドを実行 # Esc-p : ヒストリから置換 [後に入力] # Ctrl-r : ヒストリから置換 [先に入力] # Ctrl-d : 補完リスト # Ctrl-u : 削除 # ls **/index.* : 簡単に再帰的検索 # /usr/share/zsh/4.2.1/functions/_subversion LANG=C ############# 環境変数 . /etc/profile.d/lang.sh export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:$HOME/bin export LESS='-X -F -i -m' export LESSOPEN="|/usr/bin/lesspipe.sh %s" #export VISUAL=gedit export EDITOR=vi #unset USERNAME #export [CFLAGS, LD_LIBRARY_PATH, LD_RUN_PATH] export RUBYLIB=$HOME/lib/ruby export PERL5LIB=$HOME/lib/perl ############# 基本設定 setopt ignoreeof # ^Dでログアウトしない setopt NOHUP # ターミナルが閉じてもプログラムが死なない setopt print_eight_bit # 文字化け対策 (不完全) setopt auto_cd # 自動で cd unsetopt promptcr # echo -n foo への対策 #setopt no_clobber # 上書きリダイレクトの禁止 (許可: >|) #unsetopt LIST_BEEP # 補完時にビープを鳴らさない #setopt NO_BEEP # never ever beep ever #setopt NOBGNICE # バックグラウンドを高速に WORDCHARS="*?_-.[]~=&;\!#$%^(){}<>" # Ctrl-w でディレクトリ前まで削除 MAILCHECK=0 # メールチェックしない # プロンプト # %n = username # %m = hostname # %~ = current directory # %c = current directory (short) # $1 = execute command test $REMOTEHOST case $? in 0) PROMPT="%U$USER@%m:%c%(!.#.$)%u ";; # 左側 REMOTE 1) PROMPT="%U$USER:%c%(!.#.$)%u ";; # 左側 LOCAL esac RPROMPT="[%~]" # 右側 if [ "$TERM" = "kterm" ] || [ "$TERM" = "xterm" ] || [ "$TERM" = "screen" ];then precmd() { print -Pn "\e]0;%c %n@%m\a" } preexec() { print -Pn "\e]0;[$1] %n@%m\a" } fi ############# キーバインド #bindkey -e # キーバインドを Emacs 風に #bindkey "^[[A" history-beginning-search-backward #bindkey "^[[B" history-beginning-search-forward bindkey "^P" history-beginning-search-backward bindkey "^N" history-beginning-search-forward bindkey "^[[3~" delete-char # [DEL] ########### 色 COLORS=/etc/DIR_COLORS [ -e "/etc/DIR_COLORS.$TERM" ] && COLORS="/etc/DIR_COLORS.$TERM" [ -e "$HOME/.dircolors" ] && COLORS="$HOME/.dircolors" [ -e "$HOME/.dircolors.$TERM" ] && COLORS="$HOME/.dircolors.$TERM" [ -e "$HOME/.dir_colors" ] && COLORS="$HOME/.dir_colors" [ -e "$HOME/.dir_colors.$TERM" ] && COLORS="$HOME/.dir_colors.$TERM" [ -e "$COLORS" ] || return eval `dircolors --sh "$COLORS"` # 補完時の色 zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} # $fg[色名] / $bg[色名] / $reset_color などの変数を使って色指定ができる # エスケープシーケンスを含む文字は %{ と %} で囲む必要がある #autoload -U colors #colors ############ 補完 autoload -U compinit compinit setopt COMPLETE_IN_WORD # 単語の途中で補完 setopt CORRECT_ALL # 訂正機能 LISTMAX=0 # 補完候補が多いときに尋ねる (0=自動) # 補完候補の大文字小文字の違いを無視。 zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # メニューセレクト zstyle ':completion:*:default' menu select=1 # あるコマンドの補完を他のコマンドのように補完する # platex を latex と同じように補完できるようになる #compdef _tex platex # 特定のコマンドの補完を無効にする #compdef -d w3m ########### history HISTFILE=$HOME/.zsh_history # 履歴をファイルに保存する HISTSIZE=10240 # メモリ内の履歴の数 SAVEHIST=10240 # 保存される履歴の数 setopt SHARE_HISTORY # 共有可能 setopt hist_ignore_all_dups # 重複を排除 setopt hist_save_nodups # 重複を排除 setopt hist_reduce_blanks # 空白は詰めて登録 #setopt hist_verify # ヒストリの編集を許可 #setopt extended_history # 時刻情報も保存 ########## alias alias cp='cp -i' alias mv='mv -i' alias rm='rm -i' alias ls='ls --color=tty' alias ll='ls -l' alias l.='ls -d .*' alias la='ls -a' alias lla='ls -al' alias g='env -u LC_CTYPE grep -i -r' #alias gh='history -E 1 | grep -i' alias gh='history 1 | grep -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' alias df='df -h' alias eemacs='LANG=ja_JP.eucJP emacs' alias kb='gedit $HOME/settings/unixtips.txt' alias e='gnome-open `pwd`' alias javam='gnome-open /usr/local/share/doc/java-1.5.0-docs-ja/api/index.html' alias dict='xterm -en EUC-JP -e $HOME/bin/rdic.sh' alias go=gnome-open unalias rm rm () { echo -n 'trashed: '; la -d $*; mv $* $HOME/.Trash } wl () { ll ` which $1` } # global alias -g G='| grep -i' alias -g H='| head' alias -g L='| less' alias -g T='| tail'