狐の王国


2007年06月18日(月) [過去の今日]

#2 bashを捨ててzshを使うべきたった3つの理由

去年だったか一昨年あたりだったかからbashをやめてzshを使っているのだが、実はその理由というのはたいしたものではない。

世の中にはzshを使うとこんなに幸せになれますよ的な記事がいっぱいあるのだが、そこまでカスタマイズにハマり込むほど暇でもないし、bash程度でコマンドラインは充分すぎるほど便利なのだ。それ以上の事をするならそれこそスクリプトでも書いて~/binに入れておけばいい。

で、それなのになんでzshを使ってるかというと、それでもbashには無い魅力がそこにあるからだ。

1. ヒストリが共有できる:

もうこれが最大の理由。

コマンドライン、CLIの魅力のひとつに、実行したコマンドを保存しておけるというのがある。使い方のうろ覚えなコマンドなど、Ctrl+rを押してヒストリをインクリメンタル検索し、過去に実行したときのオプションとかを引っ張り出して来るのが超簡単。

だから俺はHISTSIZEを1万以上にしてるし、重複は保存しないようにhist_ignore_all_dupsオプションも入れてある。これなら数ヶ月分のコマンド履歴が保存される。

そんな使い方をするのだから、 GNU screen を使って何個ものシェルを立ち上げてると、ヒストリが分裂してしまうのは困るのである。zshのshare_historyオプションは欠かせない。

2. bashより速い:

これもけっこう重要。bashもbash_complitionをロードすればzsh並みの強力なオプション補完機能が得られるのだが、zshのそれよりどうしても遅い。screenで画面を作ったりすると数秒待たされる。マシンにもよるだろうが、zshなら1秒もかからない。

3. 補完で大文字小文字を区別しない:

大文字小文字の区別はしてくれた方が便利なのだが、ことコマンドラインの補完に関してはしてくれないほうが便利。大文字か小文字かなんて覚えてないし、いちいちShift押すのもかったるい。それくらい機械がさっくり補完してくれと思う。Emacsの補完もそうできないかなあ。 *1

まとめ:

というわけで、こんな理由で使ってるものだから、bashもヒストリ共有ができて速くなって補完に大文字小文字区別しなくなればbashに戻っちゃうと思う。別にzshならではというわけでもないし、bashを開発すれば実現可能な気がする。さすがにそんな手間かける気無いけども。

最後に、上のような理由でzshを使ってる俺の~/.zshrcをはっつけておこう。使いはじめのときにあちこちからコピペしたり友人からもらったりしたので、どこかで見たものばかりだと思うけどね。

bindkey -e
PATH=$HOME/bin:/usr/games:/sbin:/usr/sbin:/usr/local/sbin:$PATH
PS1=$'%n@%m:%~\n$ '
RPS1=$'%D'

## 補完時に大小文字を区別しない
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
zstyle ':completion:*' menu select=1

autoload -U compinit && compinit

## options
setopt BASH_AUTO_LIST
setopt LIST_AMBIGUOUS
setopt AUTO_PUSHD

## history
HISTFILE="$HOME/.zsh_history"
HISTSIZE=16384
SAVEHIST=16384
setopt hist_ignore_all_dups
setopt hist_reduce_blanks
setopt share_history

しかし、16384なんてヒストリサイズにしたのはなんでだろうか? 記憶が無い。

~/.zsh_historyを確認してみたら、去年の秋頃の作業と思しきものが頭のほうにあったので、およそ8〜9ヵ月分のヒストリが保存されてる模様。もっと増やしてもいいな。

(@113)


*1: などと言っていたら、 えりむが教えてくれた 。emacsでも行けるらしい。ファイル名補完は(setq completion-ignore-case t)じゃなくて(setq read-file-name-completion-ignore-case t)のようだ。thx elim! I love you!
この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ