Как привязать клавишу двойного нажатия в Zsh только если поле ввода пустое?

Как привязать клавишу двойного нажатия в Zsh только если поле ввода пустое?

Я пытаюсь привязать двойную табуляцию к clearкоманде только в том случае, если ввод в терминале пуст в оболочке zsh.

До сих пор я всегда удалял с помощью двойной табуляции, но я хочу добавить условие, если это возможно, добавив следующее в .zshrc:

bindkey -s '\t\t' 'clear^M'

Может быть, мне нужно вызвать пользовательскую функцию с привязкой клавиш, чтобы проверить, пусты ли входные данные?

Есть идеи, как решить эту проблему?

Спасибо!

решение1

Такого поведения можно добиться с помощью этого кода:

if ! typeset -f magic-double-tab-cmd >/dev/null; then
function magic-double-tab-cmd {
    echo 'clear'
}
fi

function magic-double-tab {
    # Only run magic-double-tab commands when the command line is empty and
    # when on the first line (PS1)
if ! (( $#BUFFER )) && [[ "$CONTEXT" == start ]]; then
    BUFFER=$(magic-double-tab-cmd)
    zle accept-line -w
fi
}
zle -N magic-double-tab
bindkey '\t\t' magic-double-tab

Взято измагия-вводрепозиторий.

Это аналогичный подход, который делает плагин magic-enter, но вместо него используется табуляция.

Связанный контент