Webtech Walker

zshの設定メモ

ずっとbashを使ってたんですが、この前ようやくzshにして色々設定したので覚え書き程度に。メインはMacで使いますが、一応Linuxとかでも同じになるようにしています。

補間

何はともあれzsh使うならこれだけは指定しておけということなので。

autoload -U compinit
compinit

文字コード

UTF-8に設定

export LANG=ja_JP.UTF-8

プロンプト

カレントディレクトリ、ユーザー名を2行で表示。見やすいように上に改行を入れて、カレントディレクトリは黄色にしました。エスケープ使うとコピペできないのでcolorsをロードしてます。

autoload colors
colors

PROMPT="
 %{${fg[yellow]}%}%~%{${reset_color}%} 
[%n]$ "

PROMPT2='[%n]> ' 

こんな感じ。

プロンプト

履歴

履歴を保存するファイル指定

HISTFILE="$HOME/.zsh_history"

履歴の件数

HISTSIZE=100000
SAVEHIST=100000

重複した履歴を保存しない

setopt hist_ignore_dups

履歴を共有する

setopt share_history

先頭にスペースを入れると履歴に残さない

setopt hist_ignore_space

履歴の検索

例えば"ls "とうってからC-pでlsから始まる履歴を検索できます。複数行のコマンドのときはカーソルキーで移動できるようにしています。これのおかげでC-rの使用頻度が極端に減りました。マジ便利。

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 

cdの設定

ディレクトリ名だけで移動する。

setopt auto_cd

自動でpushdする

pushdの履歴は残さない。

setopt auto_pushd
setopt pushd_ignore_dups

ターミナルのタイトル

「ユーザー名@ホスト名」をターミナルのタイトルにだす。

case "${TERM}" in
kterm*|xterm)
    precmd() {
        echo -ne "\033]0;${USER}@${HOST}\007"
    }
    ;;
esac 

色の設定

ディレクトリとシンボリックリンクと実行ファイルだけ色つけました。補間の一覧も同じ色に設定してます。

export LSCOLORS=gxfxxxxxcxxxxxxxxxgxgx
export LS_COLORS='di=01;36:ln=01;35:ex=01;32'
zstyle ':completion:*' list-colors 'di=36' 'ln=35' 'ex=32'

こんな感じになります。

lsの色

alias

とりえあえずlsのaliasだけ設定しました。環境ごとに設定したり、必要に応じて追記したりします。

case "${OSTYPE}" in
freebsd*|darwin*)
  alias ls="ls -GF"
  ;;
linux*)
  alias ls="ls -F --color"
  ;;
esac

alias la='ls -a'
alias ll='ls -l'
alias lla='ls -al'

w3mでALC検索

ふと思いついたので書いてみました。下記コマンドでALCの検索ページをw3mで開きます。便利かな?どうだろ。

$ alc 検索語
function alc() {
  if [ $# != 0 ]; then
    w3m "http://eow.alc.co.jp/$*/UTF-8/?ref=sa"
  else
    w3m "http://www.alc.co.jp/"
  fi
}

その他

キーバインド

vim使いなのにシェルのキーバインドはEmacsという中途半端さ。

bindkey -e

ビープ音ならなさない

setopt nobeep

エディタ

svn propeditとかで使うエディタを指定。

export EDITOR=vi

改行のない出力をプロンプトで上書きするのを防ぐ

unsetopt promptcr

個別設定を読み込む

環境毎にパスとかaliasを設定します。

[ -f ~/.zshrc.mine ] && source ~/.zshrc.mine

コピペ用

#補間
autoload -U compinit
compinit

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

#プロンプト
autoload colors
colors

PROMPT="
 %{${fg[yellow]}%}%~%{${reset_color}%} 
[%n]$ "

PROMPT2='[%n]> ' 

#履歴
#履歴を保存するファイル指定
HISTFILE="$HOME/.zsh_history"

#履歴の件数
HISTSIZE=100000
SAVEHIST=100000

#重複した履歴を保存しない
setopt hist_ignore_dups

#履歴を共有する
setopt share_history

#先頭にスペースを入れると履歴に残さない
setopt hist_ignore_space

#履歴の検索
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 

#cdの設定
#ディレクトリ名だけで移動する。
setopt auto_cd

#自動でpushdする
setopt auto_pushd

#pushdの履歴は残さない。
setopt pushd_ignore_dups

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

#色の設定
export LSCOLORS=gxfxxxxxcxxxxxxxxxgxgx
export LS_COLORS='di=01;36:ln=01;35:ex=01;32'
zstyle ':completion:*' list-colors 'di=36' 'ln=35' 'ex=32'

#alias
case "${OSTYPE}" in
freebsd*|darwin*)
  alias ls="ls -GF"
  ;;
linux*)
  alias ls="ls -F --color"
  ;;
esac

alias la='ls -a'
alias ll='ls -l'
alias lla='ls -al'

#w3mでALC検索
function alc() {
  if [ $# != 0 ]; then
    w3m "http://eow.alc.co.jp/$*/UTF-8/?ref=sa"
  else
    w3m "http://www.alc.co.jp/"
  fi
}

#その他
#キーバインド
bindkey -e

#ビープ音ならなさない
setopt nobeep

#エディタ
export EDITOR=emacs

#改行のない出力をプロンプトで上書きするのを防ぐ
unsetopt promptcr

#個別設定を読み込む
[ -f ~/.zshrc.mine ] && source ~/.zshrc.mine
このエントリーをはてなブックマークに追加