LoginSignup
17
16

More than 5 years have passed since last update.

zshでEnterを連打したときにいろいろ実行する

Posted at

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記事 の方に書いたので参考にしてみてください。

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16