mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-18 16:45:38 -05:00
Created Examples (completion) (markdown)
50
Examples-(completion).md
Normal file
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
|
||||
```
|
||||
Reference in New Issue
Block a user