Changelog History
Page 1
-
v0.35.0 Changes
- ➕ 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
.sh 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 ```sh # 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 ```sh fzf --preview 'cat {}' --border --preview-label=' Preview ' --preview-label-pos=2
- 0️⃣ Info panel (counter) will be followed by a horizontal separator by default
- The color of the separator can be customized via
--color=separator:...
- Separator can be disabled by adding
:nosep
to--info
--info=nosep
--info=inline:nosep
- The color of the separator can be customized via
- ➕ Added
-
v0.34.0 Changes
➕ 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 ```sh # 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 ```sh # 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. Usereload
action instead.
-
v0.33.0 Changes
- ➕ 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 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.
sh 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 forborder-{top,bottom}
in--preview-window
- ➕ Added support for ANSI
strikethrough
sh printf "\e[9mdeleted" | fzf --ansi fzf --color fg+:strikethrough
- ➕ Added
-
v0.32.1 Changes
- 🛠 Fixed incorrect ordering of
--tiebreak=chunk
- fzf-tmux will show fzf border instead of tmux popup border (requires tmux 3.3) ```sh fzf-tmux -p70% fzf-tmux -p70% --color=border:bright-red fzf-tmux -p100%,60% --color=border:bright-yellow --border=horizontal --padding 1,5 --margin 1,0 fzf-tmux -p70%,100% --color=border:bright-green --border=vertical
# Key bindings (CTRL-T, CTRL-R, ALT-C) will use these options export FZF_TMUX_OPTS='-p100%,60% --color=border:green --border=horizontal --padding 1,5 --margin 1,0'
- 🛠 Fixed incorrect ordering of
-
v0.32.0 Changes
- ⚡️ 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
sh # foo/bar.sh` is preferred over `foo-bar.sh` on `bar` fzf --query=bar --height=4 << EOF foo-bar.sh foo/bar.sh EOF
- Different bonus points to different categories of word boundaries
(listed higher to lower bonus point)
- ➕ 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 inputsh # 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 tolength
. But we're not going to set it as the default because it is computationally more expensive.
- 🐛 Bug fixes and improvements
- ⚡️ Updated the scoring algorithm
-
v0.31.0 Changes
- ➕ Added support for an alternative preview window layout that is activated when the size of the preview window is smaller than a certain threshold. ```sh # 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
-
v0.30.0 Changes
- 🛠 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.sh # Search against hidden line numbers on the far right nl /usr/share/dict/words | awk '{printf "%s%1000s\n", $2, $1}' | fzf --nth=-1 --no-hscroll --ellipsis='' | awk '{print $2}'
- ➕ Added
rebind
action for restoring bindings afterunbind
- 🐛 Bug fixes and improvements
-
v0.29.0 Changes
- ➕ Added
change-preview(...)
action to change the--preview
command- cf.
preview(...)
is a one-off action that doesn't change the default preview command
- cf.
- ➕ 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|)'
- You can rotate through the different options separated by
- 🛠 Fixed rendering of the prompt line when overflow occurs with
--info=inline
- ➕ Added
-
v0.28.0 Changes
- ➕ Added
--header-first
option to print header before the prompt linesh fzf --header $'Welcome to fzf\n▔▔▔▔▔▔▔▔▔▔▔▔▔▔' --reverse --height 30% --border --header-first
- ➕ Added
--scroll-off=LINES
option (similar toscrolloff
option of Vim)- You can set it to a very large number so that the cursor stays in the
middle of the screen while scrolling
sh fzf --scroll-off=5 fzf --scroll-off=999
- You can set it to a very large number so that the cursor stays in the
middle of the screen while scrolling
- 🛠 Fixed bug where preview window is not updated on
reload
(#2644) - 🏁 fzf on Windows will also use
$SHELL
to execute external programs- See #2638 and #2647
- Thanks to @rashil2000, @vovcacik, and @janlazo
- ➕ Added
-
v0.27.3 Changes
- 0️⃣ Preview window is
hidden
by default when there arepreview
bindings but--preview
command is not given - 🛠 Fixed bug where
{n}
is not properly reset onreload
- 🛠 Fixed bug where spinner is not displayed on
reload
- ✨ Enhancements in tcell renderer for Windows (#2616)
🔌 Vim plugin
sinklist
is added as a synonym tosink*
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
- 0️⃣ Preview window is