Fzf: Difference between revisions

From wikinotes
No edit summary
Line 14: Line 14:
= Usage =
= Usage =
<blockquote>
<blockquote>
== CLI Arguments ==
<blockquote>
<syntaxhighlight lang="bash">
# Search Modes
fzf \
  -q $SEARCH `# search interactively for $SEARCH` \
  -f $SEARCH `# print results for $SEARCH`
  `# if neither -q/-f, user types search interactively`
# Match Customization
fzf \
  -m                    `# allow multiple-selections` \
  +m                    `# disallow multiple-selections` \
  -i                    `# case insensitive` \
  -e                    `# exact-matches only (like 'foo)` \
  --tiebreak=length,end  `# choose between equally scoring matches`
# Match Syntax
foo        # fuzzy-matches
'foo      # exact-matches (rather than fuzzy)
^foo$      # anchored matches start/end
!foo      # results that don't match foo
foo | bar  # or
'foo bar  # compound matches
</syntaxhighlight>
Examples
<syntaxhighlight lang="bash">
# Interactive
result=$(find . | fzf +m)    # choose single
results=($(find . | fzf -m))  # choose single or multiple
# Non-Interactive
find . | fzf --filter 'todo'  # print sorted matches for 'todo' on stdout
</syntaxhighlight>
</blockquote><!-- CLI Arguments -->
== Keybindings ==
== Keybindings ==
<blockquote>
<blockquote>
Line 33: Line 70:
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Keybindings -->
</blockquote><!-- Keybindings -->
== CLI Usage ==
<blockquote>
<syntaxhighlight lang="bash">
result=$(find . | fzf +m)    # choose single
results=($(find . | fzf -m))  # choose single or multiple
</syntaxhighlight>
</blockquote><!-- CLI Usage -->
</blockquote><!-- Usage -->
</blockquote><!-- Usage -->



Revision as of 14:20, 27 February 2022

fzf is a tool that lets you fuzzy search lines piped to it on stdin.

Documentation

github https://github.com/junegunn/fzf
man fzf https://man.archlinux.org/man/community/fzf/fzf.1.en

Usage

CLI Arguments

# Search Modes
fzf \
  -q $SEARCH `# search interactively for $SEARCH` \
  -f $SEARCH `# print results for $SEARCH`
  `# if neither -q/-f, user types search interactively`

# Match Customization
fzf \
  -m                     `# allow multiple-selections` \
  +m                     `# disallow multiple-selections` \
  -i                     `# case insensitive` \
  -e                     `# exact-matches only (like 'foo)` \
  --tiebreak=length,end  `# choose between equally scoring matches`

# Match Syntax
foo        # fuzzy-matches
'foo       # exact-matches (rather than fuzzy)
^foo$      # anchored matches start/end
!foo       # results that don't match foo
foo | bar  # or
'foo bar   # compound matches

Examples

# Interactive
result=$(find . | fzf +m)     # choose single
results=($(find . | fzf -m))  # choose single or multiple

# Non-Interactive
find . | fzf --filter 'todo'  # print sorted matches for 'todo' on stdout

Keybindings

Default Keybindings

up/down  # go up/down entry
tab      # mark entry as selected (when multi-select active)
enter    # single-select and exit
# type   # search results

You can set your own keybindings as well
See AVAILABLE ACTIONS in man fzf

export FZF_DEFAULT_OPTS='\
--bind \
ctrl-a:select-all,\
ctrl-d:deselect-all'

Extensions

fzf-tab (fzf-on-tabcomplete) https://github.com/Aloxaf/fzf-tab