Hatena::ブログ(Diary)

kei_q

2011-04-06

zshでコマンドが空の状態でenter押したときに任意のコマンドを実行する方法

背景

.zsh_historyを見たらlsコマンド打ちすぎなことに気がついた

解決案

コマンドライン空でEnter押したらlsしてほしい

解決するコード

alls() {
  zle accept-line
  if [[ -z "$BUFFER" ]]; then
    echo ''
    ls
  fi
}
zle -N alls
bindkey "\C-m" alls

解説

もともとのEnterは、zleのwidgetであるaccept-lineが割り当てられている。

なので、bindkeyで割り当て直して、accept-lineしつつコマンドラインのBUFFERを調べて、空ならlsを実行するようにしている。

その他改善案

  • chpwd hookで、cdのたびにlsされるようにする
  • filerなどを有効活用する
  • alias l=lsとかで満足する

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kei_q/20110406/1302091565