zshでコマンドが空の状態でenter押したときに任意のコマンドを実行する方法
解決案
コマンドライン空で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とかで満足する