zsh

Zsh
zshのダウンロード(SourceForge)
UNIX Shellの一つ。Tabキー補完機能とかが優秀。
インストールそのままの未設定だと真の機能を使えないので設定必須。

インストール

1. zshのビルド
今回は【ver 5.0.0】を元に説明(単に、自分の環境が5.0.0なので)。
他のバージョンでも同様に出来る。

# wget http://downloads.sourceforge.net/project/zsh/zsh/5.0.0/zsh-5.0.0.tar.bz2
# tar jxvf zsh-5.0.0.tar.bz2
# cd zsh-5.0.0
# ./configure --enable-multibyte --enable-locale
# make
# make install



2. デフォルト(ログイン)シェルの設定
一般ユーザのみzshに適応させる。
rootはzshに問題が発生しても使用出来る様にする必要がある為、bash等でそのままにしておく事を推奨

# vi /etc/passwd
root:x:0:0:root:/root:/bin/bash

root:x:0:0:root:/root:/usr/local/bin/zsh

に変更

zshの設定

I. zshの設定方法
zshには色々なテーマ(スキーマ)が用意されているので、面倒くさい人はそっち使う事を推奨。
有名処だとoh-my-zshとか。
だが、oh-my-zshは日本語環境だと[Tab]キー押した時にバグる(自分の環境では[Tab]補完後に文字が消えたりした)のと、
今まで慣れ親しんだbashベースの方が個人的には使いやすいので、自分で設定ファイルを書いていく。


II. .zprofileの設定

# vi ~/.zprofile
#-----------------------#
#                       #
#   zsh環境変数設定     #
#                       #
#-----------------------#

## 環境変数
export LANG=ja_JP.UTF-8        #文字コード     = 日本語UTF8
export LC_CTYPE=ja_JP.UTF-8    #ロケール       = 日本語UTF8
export EDITOR=vim              #標準エディタ   = vim
export KCODE=u                 #KCODE          = UTF-8
#export PAGER=lv               #ページャ       = lv
#export LV=-Ou8                #ページャの出力 = UTF8
#export LSCOLORS=              #lsコマンドの配色
#export LS_COLORS=             #glsコマンドの配色

## PATH
MAKE_DIR=/usr/local
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
#自分でビルドしたバイナリディレクトリへのPATHを追記していく。
#下みたいにしていけばOK
#PATH=${PATH}:${MAKE_DIR}/apache/bin
#PATH=${PATH}:${MAKE_DIR}/apr/bin
export PATH



III. zshrcの設定

# vi ~/.zshrc
#---------------------------#
#                           #
#   BASH風zsh設定ファイル   #
#                           #
#---------------------------#

## ターミナル設定
autoload -U compinit && compinit                #自動補完の有効
autoload -U colors && colors                    #プロンプトの色づけ
zstyle ':completion:*:default' menu select=1    #補完候補を矢印キーで移動
setopt correct                                  #誤入力コマンドを正コマンドへサジェスト
setopt nobeep                                   #ビープを鳴らさない
setopt magic_equal_subst                        #--libexec="~"等の"~"部分を補完する
setopt list_packed                              #lsコマンドを左詰で表示
setopt auto_cd                                  #cdコマンドを打たなくても、ディレクトリ移動
setopt auto_pushd                               #cdコマンドで移動しても、自動的にpushdコマンドと同等にする

## プロンプト
case ${UID} in
0)  #rootログイン時
    PROMPT="%{${fg[blue]}%}[%n@%m %c]%(!.$.#) %{${reset_color}%}"           #左側に表示される標準プロンプト
    PROMPT2="%{${fg[blue]}%}%_> %{${reset_color}%}"                         #2行以上のコマンドを入力した際に表示する>プロンプト
    SPROMPT="%{${fg[red]}%}correct: %R -> %r [nyae]? %{${reset_color}%}"    #コマンドを打ち間違えた時の補完プロンプト
    RPROMPT="%{${fg[blue]}%}[%d]%{${reset_color}%}"                         #右側に表示される拡張プロンプト
    setopt transient_rprompt                                                #コマンド実行後は右側拡張プロンプトを消去
    ;;
*)  #一般ユーザ
    PROMPT="%{${fg[blue]}%}[%n@%m %c]%(!.#.$) %{${reset_color}%}"           #左側に表示される標準プロンプト
    PROMPT2="%{${fg[blue]}%}%_> %{${reset_color}%}"                         #2行以上のコマンドを入力した際に表示する>プロンプト
    SPROMPT="%{${fg[red]}%}correct: %R -> %r [nyae]? %{${reset_color}%}"    #コマンドを打ち間違えた時の補完プロンプト
    RPROMPT="%{${fg[blue]}%}[%d]%{${reset_color}%}"                         #右側に表示される拡張プロンプト
    setopt transient_rprompt                                                #コマンド実行後は右側拡張プロンプトを消去
    ;;
esac

## 履歴
HISTFILE=~/.zsh_history                  #コマンド履歴ファイル
HISTSIZE=10000                           #履歴最大サイズ
SAVEHIST=10000                           #履歴の保存数
autoload    history-search-end           #コマンド履歴検索の有効
setopt      hist_ignore_dups             #直前と同じコマンドを履歴に残さない
setopt      share_history                #複数ターミナル間でコマンド履歴を共有
setopt      extended_history             #コマンド履歴に実行時間も追加
function history-all { history -E 1 }    #コマンド履歴を全部表示

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    #Ctrl+pで履歴の前コマンドを検索
bindkey "^N" history-beginning-search-forward-end     #Ctrl+nで履歴の次コマンドを検索
bindkey '^P' history-beginning-search-backward-end    #Ctrl+pで履歴の前コマンドを検索(キーボード互換用)
bindkey '^N' history-beginning-search-forward-end     #Ctrl+nで履歴の次コマンドを検索(キーボード互換用)

## エイリアス
setopt complete_aliases
#普段からよく使うコマンドをエイリアスとして張っておくと後々楽。下のは例
#alias ls="ls --color=auto"
#alias la="ls -a --color=auto"
#alias ll="ls -l --color=auto"
#alias vi="vim"