- Update to 0.35.0:
* Added start event that is triggered only once when fzf finder
starts. Since fzf consumes the input stream asynchronously,
the input list is not available unless you use --sync.
seq 100 | fzf --multi --sync --bind 'start:last+select-all+preview(echo welcome)'
* Added --border-label and --border-label-pos for putting label
on the border
# ANSI color codes are supported
# (with https://github.com/busyloop/lolcat)
label=$(curl -s http://metaphorpsum.com/sentences/1 | lolcat -f)
# Border label at the center
fzf --height=10 --border --border-label="╢ $label ╟" \
--color=label:italic:black
# Left-aligned (positive integer)
fzf --height=10 --border --border-label="╢ $label ╟" \
--border-label-pos=3 --color=label:italic:black
# Right-aligned (negative integer) on the bottom line (:bottom)
fzf --height=10 --border --border-label="╢ $label ╟" \
--border-label-pos=-3:bottom --color=label:italic:black
* Also added --preview-label and --preview-label-pos for the
border of the preview window
fzf --preview 'cat {}' --border --preview-label=' Preview ' \
--preview-label-pos=2
* Info panel (match counter) will be followed by a horizontal separator
by default
- Use --no-separator or --separator='' to hide the separator
- You can specify an arbitrary string that is repeated to form the
horizontal separator. e.g. --separator=╸
- The color of the separator can be customized via --color=separator:...
- ANSI color codes are also supported
fzf --separator=╸ --color=separator:green
fzf --separator=$(lolcat -f -F 1.4 <<< ▁▁▂▃▄▅▆▆▅▄▃▂▁▁) --info=inline
* Added --border=bold and --border=double along with
--preview-window=border-bold and --preview-window=border-double
OBS-URL: https://build.opensuse.org/request/show/1035310
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=60
- Update to 0.34.0:
- Added support for adaptive --height. If the --height value is prefixed
with ~, fzf will automatically determine the height in the range according
to the input size.
seq 1 | fzf --height ~70% --border --padding 1 --margin 1
seq 10 | fzf --height ~70% --border --padding 1 --margin 1
seq 100 | fzf --height ~70% --border --padding 1 --margin 1
- There are a few limitations
- Not compatible with percent top/bottom margin/padding
# This is not allowed (top/bottom margin in percent value)
fzf --height ~50% --border --margin 5%,10%
# This is allowed (top/bottom margin in fixed value)
fzf --height ~50% --border --margin 2,10%
- fzf will not start until it can determine the right height for the input
# fzf will open immediately
(sleep 2; seq 10) | fzf --height 50%
# fzf will open after 2 seconds
(sleep 2; seq 10) | fzf --height ~50%
(sleep 2; seq 1000) | fzf --height ~50%
- Fixed tcell renderer used to render full-screen fzf on Windows
--no-clear is deprecated. Use reload action instead.
OBS-URL: https://build.opensuse.org/request/show/1006792
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/fzf?expand=0&rev=26
- Added support for adaptive --height. If the --height value is prefixed
with ~, fzf will automatically determine the height in the range according
to the input size.
seq 1 | fzf --height ~70% --border --padding 1 --margin 1
seq 10 | fzf --height ~70% --border --padding 1 --margin 1
seq 100 | fzf --height ~70% --border --padding 1 --margin 1
- There are a few limitations
- Not compatible with percent top/bottom margin/padding
# This is not allowed (top/bottom margin in percent value)
fzf --height ~50% --border --margin 5%,10%
# This is allowed (top/bottom margin in fixed value)
fzf --height ~50% --border --margin 2,10%
- fzf will not start until it can determine the right height for the input
# fzf will open immediately
(sleep 2; seq 10) | fzf --height 50%
# fzf will open after 2 seconds
(sleep 2; seq 10) | fzf --height ~50%
(sleep 2; seq 1000) | fzf --height ~50%
- Fixed tcell renderer used to render full-screen fzf on Windows
--no-clear is deprecated. Use reload action instead.
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=58
- Update to 0.33.0:
- Added --scheme=[default|path|history] option to choose scoring scheme
- (Experimental)
- We updated the scoring algorithm in 0.32.0, however we have learned that
this new scheme (default) is not always giving the optimal result
- path: Additional bonus point is only given to the the characters after
path separator. You might want to choose this scheme if you have many
files with spaces in their paths.
- history: No additional bonus points are given so that we give more
weight to the chronological ordering. This is equivalent to the scoring
scheme before 0.32.0. This also sets --tiebreak=index.
- ANSI color sequences with colon delimiters are now supported.
printf "\e[38;5;208mOption 1\e[m\nOption 2" | fzf --ansi
printf "\e[38:5:208mOption 1\e[m\nOption 2" | fzf --ansi
- Support border-{up,down} as the synonyms for border-{top,bottom} in
--preview-window
- Added support for ANSI strikethrough
printf "\e[9mdeleted" | fzf --ansi
fzf --color fg+:strikethrough
OBS-URL: https://build.opensuse.org/request/show/1001296
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=56
- Update to 0.32.0:
- Updated the scoring algorithm
- Different bonus points to different categories of word
boundaries (listed higher to lower bonus point)
- Word after whitespace characters or beginning of the string
- Word after common delimiter characters (/,:;|)
- Word after other non-word characters
# foo/bar.sh` is preferred over `foo-bar.sh` on `bar`
fzf --query=bar --height=4 << EOF
foo-bar.sh
foo/bar.sh
EOF
- Added a new tiebreak chunk
- Favors the line with shorter matched chunk. A chunk is a
set of consecutive non-whitespace characters.
- Unlike the default length, this scheme works well with
tabular input
# length prefers item #1, because the whole line is shorter,
# chunk prefers item #2, because the matched chunk ("foo") is shorter
fzf --height=6 --header-lines=2 --tiebreak=chunk --reverse --query=fo << "EOF"
N | Field1 | Field2 | Field3
- | ------ | ------ | ------
1 | hello | foobar | baz
2 | world | foo | bazbaz
EOF
- If the input does not contain any spaces, chunk is
equivalent to length. But we're not going to set it as the
default because it is computationally more expensive.
- Bug fixes and improvements
OBS-URL: https://build.opensuse.org/request/show/992624
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=54
- Update to 0.31.0:
- Added support for an alternative preview window layout that
is activated when the size of the preview window is smaller
than a certain threshold.
# If the width of the preview window is smaller than 50 columns,
# it will be displayed above the search window.
fzf --preview 'cat {}' --preview-window 'right,50%,border-left,<50(up,30%,border-bottom)'
# Or you can just hide it like so
fzf --preview 'cat {}' --preview-window '<50(hidden)'
- fzf now uses SGR mouse mode to properly support mouse on
larger terminals
- You can now use characters that do not satisfy
unicode.IsGraphic constraint for --marker, --pointer, and
--ellipsis. Allows Nerd Fonts and stuff.
Use at your own risk.
- Bug fixes and improvements
- Shell extension
kill completion now requires trigger sequence (**) for
consistency
OBS-URL: https://build.opensuse.org/request/show/990592
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=52
- update to 0.30.0:
* Fixed cursor flickering over the screen by hiding it during rendering
* Added --ellipsis option. You can take advantage of it to make fzf
effectively search non-visible parts of the item.
* Added rebind action for restoring bindings after unbind
* Switching between Ripgrep mode and fzf mode
* Bug fixes and improvements
OBS-URL: https://build.opensuse.org/request/show/984249
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=49
- Update to 0.29.0:
- Added `change-preview(...)` action to change the `--preview` command
- cf. `preview(...)` is a one-off action that doesn't change the
default preview command
- Added `change-preview-window(...)` action
- You can rotate through the different options separated by `|`
```sh
fzf --preview 'cat {}' --preview-window right:40% \
--bind 'ctrl-/:change-preview-window(right,70%|down,40%,border-top|hidden|)'
```
- Fixed rendering of the prompt line when overflow occurs with
`--info=inline`
OBS-URL: https://build.opensuse.org/request/show/942380
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=48
- Update to 0.27.3:
- Preview window is `hidden` by default when there are `preview` bindings but
`--preview` command is not given
- Fixed bug where `{n}` is not properly reset on `reload`
- Fixed bug where spinner is not displayed on `reload`
- Enhancements in tcell renderer for Windows (#2616)
- Vim plugin
- `sinklist` is added as a synonym to `sink*` so that it's
easier to add a function to a spec dictionary
```vim
let spec = { 'source': 'ls', 'options': ['--multi', '--preview', 'cat {}'] }
function spec.sinklist(matches)
echom string(a:matches)
endfunction
call fzf#run(fzf#wrap(spec))
```
- Vim 7 compatibility
- Set FZF_VERSION and FZF_REVISION environment variables as well.
OBS-URL: https://build.opensuse.org/request/show/925521
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/fzf?expand=0&rev=19
- Preview window is `hidden` by default when there are `preview` bindings but
`--preview` command is not given
- Fixed bug where `{n}` is not properly reset on `reload`
- Fixed bug where spinner is not displayed on `reload`
- Enhancements in tcell renderer for Windows (#2616)
- Vim plugin
- `sinklist` is added as a synonym to `sink*` so that it's
easier to add a function to a spec dictionary
```vim
let spec = { 'source': 'ls', 'options': ['--multi', '--preview', 'cat {}'] }
function spec.sinklist(matches)
echom string(a:matches)
endfunction
call fzf#run(fzf#wrap(spec))
```
- Vim 7 compatibility
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=44
- Added unbind action. In the following Ripgrep launcher
example, you can use unbind(reload) to switch to fzf-only
filtering mode.
See https://github.com/junegunn/fzf/blob/master/ADVANCED.md#switching-to-fzf-only-search-mode
- Vim plugin will stop immediately even when the source command hasn't finished
" fzf will read the stream file while allowing other processes to append to it
call fzf#run(fzf#wrap({'source': 'cat /dev/null > /tmp/stream; tail -f /tmp/stream'}))
- It is now possible to open popup window relative to the currrent window
let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6, 'relative': v:true, 'yoffset': 1.0 } }
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=40
- Update to 0.26.0:
- Added support for fixed header in preview window
# Display top 3 lines as the fixed header
fzf --preview 'bat --style=header,grid --color=always {}' --preview-window '~3'
More advanced preview offset expression to better support the fixed header
# Preview with bat, matching line in the middle of the window below
# the fixed header of the top 3 lines
#
# ~3 Top 3 lines as the fixed header
# +{2} Base scroll offset extracted from the second field
# +3 Extra offset to compensate for the 3-line header
# /2 Put in the middle of the preview area
#
git grep --line-number '' |
fzf --delimiter : \
--preview 'bat --style=full --color=always --highlight-line {2} {1}' \
--preview-window '~3:+{2}+3/2'
- Added select and deselect action for unconditionally selecting or
deselecting a single item in --multi mode. Complements toggle action.
- Sigificant performance improvement in ANSI code processing
- Bug fixes and improvements
OBS-URL: https://build.opensuse.org/request/show/878879
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/fzf?expand=0&rev=15
- Added support for fixed header in preview window
# Display top 3 lines as the fixed header
fzf --preview 'bat --style=header,grid --color=always {}' --preview-window '~3'
More advanced preview offset expression to better support the fixed header
# Preview with bat, matching line in the middle of the window below
# the fixed header of the top 3 lines
#
# ~3 Top 3 lines as the fixed header
# +{2} Base scroll offset extracted from the second field
# +3 Extra offset to compensate for the 3-line header
# /2 Put in the middle of the preview area
#
git grep --line-number '' |
fzf --delimiter : \
--preview 'bat --style=full --color=always --highlight-line {2} {1}' \
--preview-window '~3:+{2}+3/2'
- Added select and deselect action for unconditionally selecting or
deselecting a single item in --multi mode. Complements toggle action.
- Sigificant performance improvement in ANSI code processing
- Bug fixes and improvements
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=35
- Text attributes set in --color are not reset when fzf sees another
--color option for the same element. This allows you to put custom
text attributes in your $FZF_DEFAULT_OPTS and still have those
attributes even when you override the colors.
# Default colors and attributes
fzf
# Apply custom text attributes
export FZF_DEFAULT_OPTS='--color fg+:italic,hl👎underline,hl+👎reverse:underline'
fzf
# Different colors but you still have the attributes
fzf --color hl:176,hl+:177
# Write "regular" if you want to clear the attributes
fzf --color hl:176:regular,hl+:177:regular
- Renamed --phony to --disabled
- You can dynamically enable and disable the search functionality using
the new enable-search, disable-search, and toggle-search actions
- You can assign a different color to the query string for when search
is disabled
fzf --color query:#ffffff,disabled:#999999 --bind space:toggle-search
- Added last action to move the cursor to the last match
The opposite action top is renamed to first, but top is still
recognized as a synonym for backward compatibility
- Added preview-top and preview-bottom actions
- Extended support for alt key chords: alt with any case-sensitive
single character
fzf --bind alt-,:first,alt-.:last
- Generate tags for vim documentation
OBS-URL: https://build.opensuse.org/request/show/859924
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/fzf?expand=0&rev=13
--color option for the same element. This allows you to put custom
text attributes in your $FZF_DEFAULT_OPTS and still have those
attributes even when you override the colors.
# Default colors and attributes
fzf
# Apply custom text attributes
export FZF_DEFAULT_OPTS='--color fg+:italic,hl👎underline,hl+👎reverse:underline'
fzf
# Different colors but you still have the attributes
fzf --color hl:176,hl+:177
# Write "regular" if you want to clear the attributes
fzf --color hl:176:regular,hl+:177:regular
- Renamed --phony to --disabled
- You can dynamically enable and disable the search functionality using
the new enable-search, disable-search, and toggle-search actions
- You can assign a different color to the query string for when search
is disabled
fzf --color query:#ffffff,disabled:#999999 --bind space:toggle-search
- Added last action to move the cursor to the last match
The opposite action top is renamed to first, but top is still
recognized as a synonym for backward compatibility
- Added preview-top and preview-bottom actions
- Extended support for alt key chords: alt with any case-sensitive
single character
fzf --bind alt-,:first,alt-.:last
- Generate tags for vim documentation
OBS-URL: https://build.opensuse.org/package/show/utilities/fzf?expand=0&rev=31