handlename's blog

コード片など

最近のzshまわり

色々変更加えたので今どんな感じなのかメモっておく。

zaw

https://github.com/zsh-users/zaw

zsh で使える anything ライクなインターフェイス。 自分で絞り込み対象を追加できるみたいだけど、 いまのところデフォルトのもので事足りてる。

source ~/dev/clone/zaw/zaw.zsh

zstyle ':filter-select' case-insensitive yes

bindkey '^xb' zaw-git-branches
bindkey '^xd' zaw-cdr
bindkey '^xh' zaw-history

z も使ってみたけど zaw-cdr の方が便利な気がした。

zaw-history は、設定してはいるけど SAVEHIST を 500000 とかにしているので重すぎて使ってない。

syntax-highlighting

https://github.com/zsh-users/zsh-syntax-highlighting

存在しないコマンドが赤くなるのが便利。

prompt

以下のものを表示するようにしている。

  • ホスト名
  • カレントディレクトリ
  • vcs情報
  • 現在時刻
autoload -Uz vcs_info
zstyle ':vcs_info:*' formats '%s:%b'
zstyle ':vcs_info:*' actionformats '%s:%b[%a]'

function _update_vcs_info_msg() {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
}

add-zsh-hook precmd _update_vcs_info_msg

if [ "${TERM}" != "dumb" ]; then
    autoload colors
    colors
    PROMPT="%B%F{black}-- %D{%Y/%m/%d %H:%M:%S} --

%B%F{cyan}%m:%F{yellow}%/ %1(v|%{${fg[green]}%}%1v%f |)
%F{cyan}%F{red}%(!,#,$)%{${reset_color}%}%b "
    PROMPT2="%{${fg[orange]}%}%_ %%%{${reset_color}%} "
    SPROMPT="%{${fg[yellow]}%}%r%{${reset_color}%} is correct? [n, y, a, e]: "
fi

vcs 関連の表示は以下のエントリを参考にしている。

もっと高機能な設定方法が紹介されているが、 表示がワンテンポ遅くなるしそこまでの情報量は必要ないと感じたので ブランチ名の表示くらいしか使ってない。

表示されるのはこんなやつ。

deneb:/Users/handle 
$ cal
      12013
日 月 火 水 木 金 土
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

-- 2013/01/20 18:30:02 --

deneb:/Users/handle 
$

現在時刻の表示が案外便利。

prompt (mysql)

zsh に直接関係するものではないけれど。 現在選択中のデータベース名を表示するようにしている。

export MYSQL_PS1='mysql \d > '

操作ミスやいちいち今どこにいるのか確認する手間が減って良い。

おわり

emacszshGoogle Chrome は確実に毎日使う道具なので、 便利な機能はどんどん追加していきたいところ。