m/fzf
1
0
mirror of https://github.com/junegunn/fzf.git synced 2025-11-19 09:03:43 -05:00

Created Examples (completion) (markdown)

Junegunn Choi
2015-10-05 23:55:53 +09:00
parent bafe6169fb
commit cabba02b27

50
Examples-(completion).md Normal file

@@ -0,0 +1,50 @@
_**Custom completion API is experimental and subject to change**_
Writing custom fuzzy completion
-------------------------------
First define `_fzf_complete_COMMAND` function using `_fzf_complete` helper.
```sh
# Custom fuzzy completion for "doge" command
# e.g. doge **<TAB>
_fzf_complete_doge() {
_fzf_complete "--multi --reverse" "$@" < <(
echo very
echo wow
echo such
echo doge
)
}
```
The first argument to `_fzf_complete` is the options to fzf. The second argument is the usual arguments passed to the completion function, you can simply pass `"$@"` here.
You can see that the output of some arbitrary commands (4 echos) are fed into the function using process substitution `< <(...)`. The lines from the output of the enclosed commands become the completion candidates.
zsh will automatically pick up the command but in bash you have to connect the function to the command using `complete` command.
```sh
[ -n "$BASH" ] && complete -F _fzf_complete_doge -o default -o bashdefault doge
```
Examples
--------
### [pass](http://www.passwordstore.org/)
```sh
# pass completion suggested by @d4ndo (#362)
_fzf_complete_pass() {
_fzf_complete '+m' "$@" < <(
local pwdir=${PASSWORD_STORE_DIR-~/.password-store/}
local stringsize="${#pwdir}"
find "$pwdir" -name "*.gpg" -print |
cut -c "$((stringsize + 1))"- |
sed -e 's/\(.*\)\.gpg/\1/'
)
}
[ -n "$BASH" ] && complete -F _fzf_complete_pass -o default -o bashdefault pass
```