입력이 비어 있는 경우에만 Zsh에서 이중 탭 키를 어떻게 바인딩합니까?

입력이 비어 있는 경우에만 Zsh에서 이중 탭 키를 어떻게 바인딩합니까?

clearzsh 쉘에서 터미널의 입력이 비어 있는 경우에만 명령 에 이중 탭을 바인딩하려고 합니다 .

지금까지 내가 달성한 것은 항상 이중 탭으로 삭제하는 것이지만 가능하다면 조건을 추가하고 .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 플러그인이 수행하는 것과 유사한 접근 방식이지만 대신 탭을 사용합니다.

관련 정보