「zsh最強シェル入門」の内容を試してみた
- 作者: 中島能和
- 出版社/メーカー: 翔泳社
- 発売日: 2008/12/04
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 175回
- この商品を含むブログ (51件) を見る
「zsh最強シェル入門」を買いました。便利そうなことが書いてあったので、さっそく内容を試してみました。
ちなみに、僕が今まで知ってたことも結構書いてあったけど、そういうのはパス。基本を抑えたい人は漢のzshの連載なんかを見るといいよ。
!を使ったヒストリ操作
!$
を使うと、その部分が直前のコマンドの最後の引数になります。
例えば、
% cp hoge.sh hoge-temp.sh # テスト用のファイルをコピーして、 % vi !$ # これで編集できる % vi !$ # ここでタブを押すと、 % vi hoge-temp.sh # ほんとのファイル名に展開される # ヒストリの登録はちゃんとした名前になってる % history ... 150 vi hoge-temp.sh
zshすげー! あと、$*
を使うと前のコマンドの引数全部になります。
キーバインドのカスタマイズ
コマンドライン編集のことも載っていました。さすがzsh、やりすぎなくらい高機能です。でも微妙にキーが押しにくいコマンドがあります。せっかくの機能がもったいない。ということで、そういうのを押しやすいキーに変更しました。ちなみに、これはemacsモードの例です。
bindkey "^[u" undo bindkey "^[r" redo bindkey "^\\" history-beginning-search-backward bindkey -s '^O' '^E !$^I'
初めの2行はundo/redoです。もともとundoは"^X^U"
と"^_"
になっていたけど、どっちも押しにくいので変更しました。redoの方はデフォルトでキー割り当てがありません。せっかくなので登録しておきました。
3行目はこんな風に使います。
% ls / # ここで^\を押すと、 % ls /home/ # ls / で始まる履歴が表示される % ls /usr/bin # ^\を押すと、さらに次が表示される
これもデフォルトでは割り当てられていないので、追加しておきました。
4行目は、さっき説明した!$
でのヒストリ展開です。^O
で「行末に移動して!$を追加し、さらにそれをタブで展開」というのを一気に行います。こんな風に-sで好きな文字列に割り当てられるので、!$
なんてめんどくさくて押してられない、という人(僕のこと)も安心です。
2008/12/16 追記
こんなことしなくても、もともとの機能であったよ。
bindkey '^O' insert-last-word
こっちを使うことにした。
2008/12/11 追記
キーバインドを微妙に変更した。特に、history-beginning-search-backward を^Pに設定していたが、コマンド入力無しの状態で^Pを入力すると一つ前の履歴を表示した後カーソルキーが行頭に来てしまっていた。これがいやだったので^Pとは違うキーに変更した。
その他
setopt hist_reduce_blanks
ヒストリに記録するときに、余分なスペースが削除されます。これはsetopt hist_ignore_all_dups
なんかといっしょに設定すると良いです。
例えばこんな風に入力しても同じコマンドということになって、余計なヒストリが残らなくなります。
ls -l / ls -l /
こんな感じでzshのカスタマイズをしまくりたいので、もっと本が出てほしい。