💾 Archived View for tilde.team › ~m040601 › mirrorz › fzf_wiki › clone_fzf.wiki › Examples-(completi… captured on 2023-01-29 at 18:05:55.

View Raw

More Information

⬅️ Previous capture (2022-07-16)

-=-=-=-=-=-=-

_**Custom completion API is experimental and subject to change**_


Writing custom fuzzy completion
-------------------------------

See https://github.com/junegunn/fzf#custom-fuzzy-completion

### [ZSH] Complete hg update/hg merge

If you need to add branch name completion for a subset of hg commands, e.g. hg up, hg merge, you can use technique as follows (zsh completion):

_fzf_complete_hg() {

ARGS="$@"

if [[ $ARGS == 'hg merge'* ]] || [[ $ARGS == 'hg up'* ]]; then

_fzf_complete --no-sort -- "$@" < <(

{ hg branches & hg tags }

)

else

eval "zle ${fzf_default_completion:-expand-or-complete}"

fi

}

_fzf_complete_hg_post() {

cut -f1 -d' '

}


### [ZSH] Complete `git co` (for example)

You can use the same approach as above to complete any git command. In the example below, completion is triggered on `git co` (usual alias for `git checkout`):

_fzf_complete_git() {

ARGS="$@"

local branches

branches=$(git branch -vv --all)

if [[ $ARGS == 'git co'* ]]; then

_fzf_complete --reverse --multi -- "$@" < <(

echo $branches

)

else

eval "zle ${fzf_default_completion:-expand-or-complete}"

fi

}

_fzf_complete_git_post() {

awk '{print $1}'

}


### [ZSH] [pass](http://www.passwordstore.org/)

_fzf_complete_pass() {

_fzf_complete +m -- "$@" < <(

local prefix

prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}"

command find -L "$prefix" \

-name "*.gpg" -type f | \

sed -e "s#${prefix}/\{0,1\}##" -e 's#\.gpg##' -e 's#\\#\\\\#' | sort

)

}


### [BASH] Custom trigger-less completion

If you want to remove the `**` trigger just for certain completions, you can achieve this like so:

_fzf_complete_ssh_notrigger() {

FZF_COMPLETION_TRIGGER='' _fzf_host_completion

}

complete -o bashdefault -o default -F _fzf_complete_ssh_notrigger ssh

complete -o bashdefault -o default -F _fzf_complete_ssh_notrigger mosh

complete -o bashdefault -o default -F _fzf_complete_ssh_notrigger ss