zsh で Enter を連打したときに順番にコマンドを実行するというのをやってみました。
参考にしたのは Zsh - Enter で ls と git status を表示すると便利 - Qiita です。
概要と実装
.zshrc
に以下のような感じで追加して空 Enter を押すと
最初は ls
で次に
svn status
または git status -sb
を実行するようになります。
連打したときに終わりがわかりやすいように 3 回目は何も実行しないようにしています。
function my_enter {
if [[ -n "$BUFFER" ]]; then
builtin zle .accept-line
return 0
fi
if [ "$WIDGET" != "$LASTWIDGET" ]; then
MY_ENTER_COUNT=0
fi
case $[MY_ENTER_COUNT++] in
0)
BUFFER=" ls"
;;
1)
if [[ -d .svn ]]; then
BUFFER=" svn status"
elif git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
BUFFER=" git status -sb"
fi
;;
*)
unset MY_ENTER_COUNT
;;
esac
builtin zle .accept-line
}
zle -N my_enter
bindkey '^m' my_enter
解説
詳細は blog記事 の方に書いたので参考にしてみてください。