
Я пытаюсь привязать двойную табуляцию к 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, но вместо него используется табуляция.