Inhaltsverzeichnis

fzf-tab-completion

Tab completion using fzf

fzf-tab-completion erweitert die Tab Auto-Complete Funktion der Shell, indem die Ergebnisse, die durch die Tastenkombination Tab+Tab hervorgerufen werden, durch den fzf Filter durch geleitet wird. Dies ermöglicht z.B. bei einer großen Menge an Programm-Optionen diese schnell zu durchsuchen und auszufiltern.

Zudem bietet fzf-tab-completion Unterstützung für Shell Aliase, sodass auch die Tab-Completion für Aliase funktioniert. Dies wird dadurch erreicht, dass ein Alias auf den Hauptbefehl aufgelöst wird, und von diesem die Auto-Complete Optionen abgerufen werden. Somit wurde der Alias config='git' auf die Auto-Complete Optionen von dem Befehl git abrufen wenn config Tab+Tab gedrückt wird.

Installation

Arch Linux

Installiere das fzf-tab-completion-gitAUR Paket.

Bash

Aktivieren und Binden von fzf-tab-completion in der Bash Shell an die Tab Taste:

source /path/to/fzf-tab-completion/bash/fzf-bash-completion.sh
bind -x '"\t": fzf_bash_completion'

Konfiguration

Siehe Github Projektseite für alle Konfigurationsmöglichkeiten.

Es gibt 2 Umbegnungsvariablen die das normale Tab+Tab Auto-Complete verhalten steuern können. Um z.B. das gewohnte verhalten nachzuahmen. Bis es zur nächsten Uneindeutigkeit:

export FZF_COMPLETION_AUTO_COMMON_PREFIX=true
export FZF_COMPLETION_AUTO_COMMON_PREFIX_PART=true

Nüztliche Funktionen

Aktiviert fzf-tab-completion in der Bash shell auser in vscode und immitiert das normale Tab+Tab verhalten der Bash bis zur nächsten uneindeutigkeit. Danach setzt der fzf Filter ein um das Ergebnis zu filtern.

fzf_tab_complition_config
fzf_tab_complition_config() {
    local _fzf_bash_completion="/usr/share/fzf-tab-completion/bash/fzf-bash-completion.sh"
    if [[ -f "${_fzf_bash_completion}" && "${TERM_PROGRAM}" != "vscode" ]]; then
        source "${_fzf_bash_completion}"
        bind -x '"\t": fzf_bash_completion'
        export FZF_COMPLETION_AUTO_COMMON_PREFIX=true
        export FZF_COMPLETION_AUTO_COMMON_PREFIX_PART=true
    fi
}
fzf_tab_complition_config

Siehe auch