zshの魅力として、history機能の強さがよく語られる。
制御構文の履歴
- bashの場合
$ for i in 1 2 3 > do > echo $i > done 1 2 3 <↑でhistoryを遡る> $ for i in 1 2 3; do echo $i; done
- zshの場合
% for i in 1 2 3 for> do for> echo $i for> done 1 2 3 <↑でhistoryを遡る> % for i in 1 2 3 do echo $i done
bashでは複数行に分けて書いたものが1行にまとめられてhistoryに格納されてしまうが、zshでは入力した形がそのまま再現される、ということらしい。
編集しやすくなるので、このような書き方をしてちょっとずつ編集する、という方法は便利かもしれない。
最初から1行にまとめて書いてしまっていたらあまり意味はなさそう…。
履歴の共有
HISTFILE=~/.zsh_history # 履歴データを保存するファイルを指定 setopt share_history # コマンド履歴ファイルを共有する設定
これを指定しておけば、別々の所で開いたzsh同士で履歴が共有できるようになるらしい。
bashでも頑張って設定すればできないことはないらしいけど。
iandeth. - bashにて複数端末間でコマンド履歴(history)を共有する方法
履歴の検索など
KeyRemap4MacBookを入れているからか、
% bindkey -L
で表示されるものの通りに動いていないようだ。
^R で history-incremental-search-backward はできるのに、
^S で history-incremental-search-forward はできない
とか。
^Xsは効くので前方検索はこれを使えばできる…が、押しづらい。
^P と ^N は上下キーの代わりとして手放したくないしなぁ。どうしよう。
今のところは履歴検索でそれほど困ることもなさそうだし、とりあえず放置しておこう。
何か困ってきたら対処を考える。