junegunn/fzf (junegunn/fzf)
### [`v0.52.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0521)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.52.0...0.52.1)
- Fixed a critical bug in the Windows version
- Windows users are strongly encouraged to upgrade to this version
### [`v0.52.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0520)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.51.0...0.52.0)
- Added `--highlight-line` to highlight the whole current line (à la `set cursorline` of Vim)
- Added color names for selected lines: `selected-fg`, `selected-bg`, and `selected-hl`
```sh
fzf --border --multi --info inline-right --layout reverse --marker ▏ --pointer ▌ --prompt '▌ ' \
--highlight-line --color gutter:-1,selected-bg:238,selected-fg:146,current-fg:189
```
- Added `click-header` event that is triggered when the header section is clicked. When the event is triggered, `$FZF_CLICK_HEADER_COLUMN` and `$FZF_CLICK_HEADER_LINE` are set.
```sh
fd --type f |
fzf --header $'[Files] [Directories]' --header-first \
--bind 'click-header:transform:
(( FZF_CLICK_HEADER_COLUMN <= 7 )) && echo "reload(fd --type f)"
(( FZF_CLICK_HEADER_COLUMN >= 9 )) && echo "reload(fd --type d)"
'
```
- Add `$FZF_COMPLETION_{DIR,PATH}_OPTS` for separately customizing the behavior of fuzzy completion
```sh
```
### [`v0.51.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0510)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.50.0...0.51.0)
- Added a new environment variable `$FZF_POS` exported to the child processes. It's the vertical position of the cursor in the list starting from 1.
```sh
```
### [`v0.50.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0500)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.49.0...0.50.0)
- Search performance optimization. You can observe 50%+ improvement in some scenarios.
$ rg --line-number --no-heading --smart-case . > $DATA
$ wc < $DATA
5520118 26862362 897487793
$ hyperfine -w 1 -L bin fzf-0.49.0,fzf-7ce6452,fzf-a5447b8,fzf '{bin} --filter "///" < $DATA | head -30'
Summary
fzf --filter "///" < $DATA | head -30 ran
1.16 ± 0.03 times faster than fzf-a5447b8 --filter "///" < $DATA | head -30
1.23 ± 0.03 times faster than fzf-7ce6452 --filter "///" < $DATA | head -30
1.52 ± 0.03 times faster than fzf-0.49.0 --filter "///" < $DATA | head -30
- Added `jump` and `jump-cancel` events that are triggered when leaving `jump` mode
```sh
```
### [`v0.49.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0490)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.48.1...0.49.0)
- Ingestion performance improved by around 40% (more or less depending on options)
- `--info=hidden` and `--info=inline-right` will no longer hide the horizontal separator by default. This gives you more flexibility in customizing the layout.
```sh
fzf --border --info=inline-right
fzf --border --info=inline-right --separator ═
fzf --border --info=inline-right --no-separator
fzf --border --info=hidden
fzf --border --info=hidden --separator ━
fzf --border --info=hidden --no-separator
```
- Added two environment variables exported to the child processes
- `FZF_PREVIEW_LABEL`
- `FZF_BORDER_LABEL`
```sh
```
### Use the current value of $FZF_PREVIEW_LABEL to determine which actions to perform
git ls-files |
fzf --header 'Press CTRL-P to change preview mode' \
--bind='ctrl-p:transform:[[ $FZF_PREVIEW_LABEL =~ cat ]] \
&& echo "change-preview(git log --color=always \{})+change-preview-label([[ log ]])" \
|| echo "change-preview(bat --color=always \{})+change-preview-label([[ cat ]])"'
```
- Renamed `track` action to `track-current` to highlight the difference between the global tracking state set by `--track` and a one-off tracking action
- `track` is still available as an alias
- Added `untrack-current` and `toggle-track-current` actions
- `*-current` actions are no-op when the global tracking state is set
- Bug fixes and minor improvements
### [`v0.48.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0481)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.48.0...0.48.1)
- CTRL-T and ALT-C bindings can be disabled by setting `FZF_CTRL_T_COMMAND` and `FZF_ALT_C_COMMAND` to empty strings respectively when sourcing the script
```sh
```
### bash
FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --bash)"
### zsh
FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --zsh)"
### fish
fzf --fish | FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= source
```
- Setting the variables after sourcing the script will have no effect
- Bug fixes
### [`v0.48.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0480)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.47.0...0.48.0)
- Shell integration scripts are now embedded in the fzf binary. This simplifies the distribution, and the users are less likely to have problems caused by using incompatible scripts and binaries.
- bash
```sh
```
### Set up fzf key bindings and fuzzy completion
eval "$(fzf --bash)"
```
- zsh
```sh
### Set up fzf key bindings and fuzzy completion
eval "$(fzf --zsh)"
```
- fish
```fish
### Set up fzf key bindings
fzf --fish | source
```
- Added options for customizing the behavior of the built-in walker
| Option | Description | Default |
| --- | --- | --- |
| `--walker=OPTS` | Walker options (`[file][,dir][,follow][,hidden]`) | `file,follow,hidden` |
| `--walker-root=DIR` | Root directory from which to start walker | `.` |
| `--walker-skip=DIRS` | Comma-separated list of directory names to skip | `.git,node_modules` |
- Examples
```sh
```
### Built-in walker is only used by standalone fzf when $FZF_DEFAULT_COMMAND is not set
unset FZF_DEFAULT_COMMAND
fzf # default: --walker=file,follow,hidden --walker-root=. --walker-skip=.git,node_modules
fzf --walker=file,dir,hidden,follow --walker-skip=.git,node_modules,target
### Walker options in $FZF_DEFAULT_OPTS
export FZF_DEFAULT_OPTS="--walker=file,dir,hidden,follow --walker-skip=.git,node_modules,target"
fzf
### Reading from STDIN; --walker is ignored
seq 100 | fzf --walker=dir
### Reading from $FZF_DEFAULT_COMMAND; --walker is ignored
export FZF_DEFAULT_COMMAND='seq 100'
fzf --walker=dir
```
- Shell integration scripts have been updated to use the built-in walker with these new options and they are now much faster out of the box.
### [`v0.47.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0470)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.46.1...0.47.0)
- Replaced ["the default find command"][find] with a built-in directory walker to simplify the code and to achieve better performance and consistent behavior across platforms.
This doesn't affect you if you have `$FZF_DEFAULT_COMMAND` set.
- Breaking changes:
- Unlike [the previous "find" command][find], the new traversal code will list hidden files, but hidden directories will still be ignored
- No filtering of `devtmpfs` or `proc` types
- Traversal is parallelized, so the order of the entries will be different each time
- You may wonder why fzf implements directory walker anyway when it's a filter program following the [Unix philosophy][unix].
But fzf has had [the walker code for years][walker] to tackle the performance problem on Windows. And I decided to use the same approach on different platforms as well for the benefits listed above.
- Built-in walker is using the excellent [charlievieth/fastwalk][fastwalk] library, which easily outperforms its competitors and supports safely following symlinks.
- Added `$FZF_DEFAULT_OPTS_FILE` to allow managing default options in a file
- See [#3618](https://togithub.com/junegunn/fzf/pull/3618)
- Option precedence from lower to higher
1. Options read from `$FZF_DEFAULT_OPTS_FILE`
2. Options from `$FZF_DEFAULT_OPTS`
3. Options from command-line arguments
- Bug fixes and improvements
[find]: https://togithub.com/junegunn/fzf/blob/0.46.1/src/constants.go#L60-L64
[walker]: https://togithub.com/junegunn/fzf/pull/1847
[fastwalk]: https://togithub.com/charlievieth/fastwalk
[unix]: https://en.wikipedia.org/wiki/Unix_philosophy
### [`v0.46.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0461)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.46.0...0.46.1)
- Bug fixes and improvements
- Fixed Windows binaries
- Downgraded Go version to 1.20 to support older versions of Windows
- https://tip.golang.org/doc/go1.21#windows
- Updated [rivo/uniseg](https://togithub.com/rivo/uniseg) dependency to v0.4.6
### [`v0.46.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0460)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.45.0...0.46.0)
- Added two new events
- `result` - triggered when the filtering for the current query is complete and the result list is ready
- `resize` - triggered when the terminal size is changed
- fzf now exports the following environment variables to the child processes
| Variable | Description |
| --- | --- |
| `FZF_LINES` | Number of lines fzf takes up excluding padding and margin |
| `FZF_COLUMNS` | Number of columns fzf takes up excluding padding and margin |
| `FZF_TOTAL_COUNT` | Total number of items |
| `FZF_MATCH_COUNT` | Number of matched items |
| `FZF_SELECT_COUNT` | Number of selected items |
| `FZF_QUERY` | Current query string |
| `FZF_PROMPT` | Prompt string |
| `FZF_ACTION` | The name of the last action performed |
- This allows you to write sophisticated transformations like so
```sh
```
### Script to dynamically resize the preview window
transformer='
### 1 line for info, another for prompt, and 2 more lines for preview window border
lines=$(( FZF_LINES - FZF_MATCH_COUNT - 4 ))
if [[ $FZF_MATCH_COUNT -eq 0 ]]; then
echo "change-preview-window:hidden"
elif [[ $lines -gt 3 ]]; then
echo "change-preview-window:$lines"
elif [[ $FZF_PREVIEW_LINES -ne 3 ]]; then
echo "change-preview-window:3"
fi
'
seq 10000 | fzf --preview 'seq {} 10000' --preview-window up \
--bind "result:transform:$transformer" \
--bind "resize:transform:$transformer"
```
- And we're phasing out `{fzf:prompt}` and `{fzf:action}`
- Changed [mattn/go-runewidth](https://togithub.com/mattn/go-runewidth) dependency to [rivo/uniseg](https://togithub.com/rivo/uniseg) for accurate results
- Set `--ambidouble` if your terminal displays ambiguous width characters (e.g. box-drawing characters for borders) as 2 columns
- `RUNEWIDTH_EASTASIAN=1` is still respected for backward compatibility, but it's recommended that you use this new option instead
- Bug fixes
### [`v0.45.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0450)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.44.1...0.45.0)
- Added `transform` action to conditionally perform a series of actions
```sh
```
### [`v0.44.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0441)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.44.0...0.44.1)
- Fixed crash when preview window is hidden on `focus` event
### [`v0.44.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0440)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.43.0...0.44.0)
- (Experimental) Sixel image support in preview window (not available on Windows)
- [bin/fzf-preview.sh](bin/fzf-preview.sh) is added to demonstrate how to
display an image using Kitty image protocol or Sixel. You can use it
like so:
```sh
fzf --preview='fzf-preview.sh {}'
```
- (Experimental) iTerm2 inline image protocol support in preview window (not available on Windows)
```sh
```
### [`v0.43.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0430)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.42.0...0.43.0)
- (Experimental) Added support for Kitty image protocol in the preview window
(not available on Windows)
```sh
fzf --preview='
if file --mime-type {} | grep -qF image/; then
```
### --transfer-mode=memory is the fastest option but if you want fzf to be able
### to redraw the image on terminal resize or on 'change-preview-window',
### you need to use --transfer-mode=stream.
kitty icat --clear --transfer-mode=memory --unicode-placeholder --stdin=no --place=${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}@0x0 {} | sed \$d
else
bat --color=always {}
fi
'
- (Experimental) `--listen` server can report program state in JSON format (`GET /`)
```sh
### [`v0.42.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0420)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.41.1...0.42.0)
- Added new info style: `--info=right`
- Added new info style: `--info=inline-right`
- Added new border style `thinblock` which uses symbols for legacy computing
[one eighth block elements](https://en.wikipedia.org/wiki/Symbols_for_Legacy_Computing)
- Similarly to `block`, this style is suitable when using a different
background color because the window is completely contained within the border.
```sh
BAT_THEME=GitHub fzf --info=right --border=thinblock --preview-window=border-thinblock \
--margin=3 --scrollbar=▏▕ --preview='bat --color=always --style=numbers {}' \
--color=light,query:238,fg:238,bg:251,bg+:249,gutter:251,border:248,preview-bg:253
```
- This style may not render correctly depending on the font and the
terminal emulator.
### [`v0.41.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0411)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.41.0...0.41.1)
- Fixed a bug where preview window is not updated when `--disabled` is set and
a reload is triggered by `change:reload` binding
### [`v0.41.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0410)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.40.0...0.41.0)
- Added color name `preview-border` and `preview-scrollbar`
- Added new border style `block` which uses [block elements](https://en.wikipedia.org/wiki/Block_Elements)
- `--scrollbar` can take two characters, one for the main window, the other
for the preview window
- Putting it altogether:
```sh
fzf-tmux -p 80% --padding 1,2 --preview 'bat --style=plain --color=always {}' \
--color 'bg:237,bg+:235,gutter:237,border:238,scrollbar:236' \
--color 'preview-bg:235,preview-border:236,preview-scrollbar:234' \
--preview-window 'border-block' --border block --scrollbar '▌▐'
```
- Bug fixes and improvements
### [`v0.40.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0400)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.39.0...0.40.0)
- Added `zero` event that is triggered when there's no match
```sh
```
### [`v0.39.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0390)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.38.0...0.39.0)
- Added `one` event that is triggered when there's only one match
```sh
```
### [`v0.38.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0380)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.37.0...0.38.0)
- New actions
- `become(...)` - Replace the current fzf process with the specified
command using `execve(2)` system call.
See https://github.com/junegunn/fzf#turning-into-a-different-process for
more information.
```sh
```
### Open selected files in Vim
fzf --multi --bind 'enter:become(vim {+})'
### Open the file in Vim and go to the line
git grep --line-number . |
fzf --delimiter : --nth 3.. --bind 'enter:become(vim {1} +{2})'
```
- This action is not supported on Windows
- `show-preview`
- `hide-preview`
- Bug fixes
- `--preview-window 0,hidden` should not execute the preview command until
`toggle-preview` action is triggered
### [`v0.37.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0370)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.36.0...0.37.0)
- Added a way to customize the separator of inline info
```sh
fzf --info 'inline: ╱ ' --prompt '╱ ' --color prompt:bright-yellow
```
- New event
- `focus` - Triggered when the focus changes due to a vertical cursor
movement or a search result update
```sh
fzf --bind 'focus:transform-preview-label:echo [ {} ]' --preview 'cat {}'
```
### Any action bound to the event runs synchronously and thus can make the interface sluggish
### e.g. lolcat isn't one of the fastest programs, and every cursor movement in
### fzf will be noticeably affected by its execution time
fzf --bind 'focus:transform-preview-label:echo [ {} ] | lolcat -f' --preview 'cat {}'
### Beware not to introduce an infinite loop
seq 10 | fzf --bind 'focus:up' --cycle
```
- New actions
- `change-border-label`
- `change-preview-label`
- `transform-border-label`
- `transform-preview-label`
- Bug fixes and improvements
### [`v0.36.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0360)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.35.1...0.36.0)
- Added `--listen=HTTP_PORT` option to start HTTP server. It allows external
processes to send actions to perform via POST method.
```sh
```
### [`v0.35.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0351)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.35.0...0.35.1)
- Fixed a bug where fzf with `--tiebreak=chunk` crashes on inverse match query
- Fixed a bug where clicking above fzf would paste escape sequences
### [`v0.35.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0350)
[Compare Source](https://togithub.com/junegunn/fzf/compare/0.34.0...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`.
```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
```
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
0.34.0
->0.52.1
Release Notes
junegunn/fzf (junegunn/fzf)
### [`v0.52.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0521) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.52.0...0.52.1) - Fixed a critical bug in the Windows version - Windows users are strongly encouraged to upgrade to this version ### [`v0.52.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0520) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.51.0...0.52.0) - Added `--highlight-line` to highlight the whole current line (à la `set cursorline` of Vim) - Added color names for selected lines: `selected-fg`, `selected-bg`, and `selected-hl` ```sh fzf --border --multi --info inline-right --layout reverse --marker ▏ --pointer ▌ --prompt '▌ ' \ --highlight-line --color gutter:-1,selected-bg:238,selected-fg:146,current-fg:189 ``` - Added `click-header` event that is triggered when the header section is clicked. When the event is triggered, `$FZF_CLICK_HEADER_COLUMN` and `$FZF_CLICK_HEADER_LINE` are set. ```sh fd --type f | fzf --header $'[Files] [Directories]' --header-first \ --bind 'click-header:transform: (( FZF_CLICK_HEADER_COLUMN <= 7 )) && echo "reload(fd --type f)" (( FZF_CLICK_HEADER_COLUMN >= 9 )) && echo "reload(fd --type d)" ' ``` - Add `$FZF_COMPLETION_{DIR,PATH}_OPTS` for separately customizing the behavior of fuzzy completion ```sh ``` ### [`v0.51.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0510) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.50.0...0.51.0) - Added a new environment variable `$FZF_POS` exported to the child processes. It's the vertical position of the cursor in the list starting from 1. ```sh ``` ### [`v0.50.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0500) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.49.0...0.50.0) - Search performance optimization. You can observe 50%+ improvement in some scenarios. $ rg --line-number --no-heading --smart-case . > $DATA $ wc < $DATA 5520118 26862362 897487793 $ hyperfine -w 1 -L bin fzf-0.49.0,fzf-7ce6452,fzf-a5447b8,fzf '{bin} --filter "///" < $DATA | head -30' Summary fzf --filter "///" < $DATA | head -30 ran 1.16 ± 0.03 times faster than fzf-a5447b8 --filter "///" < $DATA | head -30 1.23 ± 0.03 times faster than fzf-7ce6452 --filter "///" < $DATA | head -30 1.52 ± 0.03 times faster than fzf-0.49.0 --filter "///" < $DATA | head -30 - Added `jump` and `jump-cancel` events that are triggered when leaving `jump` mode ```sh ``` ### [`v0.49.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0490) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.48.1...0.49.0) - Ingestion performance improved by around 40% (more or less depending on options) - `--info=hidden` and `--info=inline-right` will no longer hide the horizontal separator by default. This gives you more flexibility in customizing the layout. ```sh fzf --border --info=inline-right fzf --border --info=inline-right --separator ═ fzf --border --info=inline-right --no-separator fzf --border --info=hidden fzf --border --info=hidden --separator ━ fzf --border --info=hidden --no-separator ``` - Added two environment variables exported to the child processes - `FZF_PREVIEW_LABEL` - `FZF_BORDER_LABEL` ```sh ``` ### Use the current value of $FZF_PREVIEW_LABEL to determine which actions to perform git ls-files | fzf --header 'Press CTRL-P to change preview mode' \ --bind='ctrl-p:transform:[[ $FZF_PREVIEW_LABEL =~ cat ]] \ && echo "change-preview(git log --color=always \{})+change-preview-label([[ log ]])" \ || echo "change-preview(bat --color=always \{})+change-preview-label([[ cat ]])"' ``` - Renamed `track` action to `track-current` to highlight the difference between the global tracking state set by `--track` and a one-off tracking action - `track` is still available as an alias - Added `untrack-current` and `toggle-track-current` actions - `*-current` actions are no-op when the global tracking state is set - Bug fixes and minor improvements ### [`v0.48.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0481) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.48.0...0.48.1) - CTRL-T and ALT-C bindings can be disabled by setting `FZF_CTRL_T_COMMAND` and `FZF_ALT_C_COMMAND` to empty strings respectively when sourcing the script ```sh ``` ### bash FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --bash)" ### zsh FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --zsh)" ### fish fzf --fish | FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= source ``` - Setting the variables after sourcing the script will have no effect - Bug fixes ### [`v0.48.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0480) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.47.0...0.48.0) - Shell integration scripts are now embedded in the fzf binary. This simplifies the distribution, and the users are less likely to have problems caused by using incompatible scripts and binaries. - bash ```sh ``` ### Set up fzf key bindings and fuzzy completion eval "$(fzf --bash)" ``` - zsh ```sh ### Set up fzf key bindings and fuzzy completion eval "$(fzf --zsh)" ``` - fish ```fish ### Set up fzf key bindings fzf --fish | source ``` - Added options for customizing the behavior of the built-in walker | Option | Description | Default | | --- | --- | --- | | `--walker=OPTS` | Walker options (`[file][,dir][,follow][,hidden]`) | `file,follow,hidden` | | `--walker-root=DIR` | Root directory from which to start walker | `.` | | `--walker-skip=DIRS` | Comma-separated list of directory names to skip | `.git,node_modules` | - Examples ```sh ``` ### Built-in walker is only used by standalone fzf when $FZF_DEFAULT_COMMAND is not set unset FZF_DEFAULT_COMMAND fzf # default: --walker=file,follow,hidden --walker-root=. --walker-skip=.git,node_modules fzf --walker=file,dir,hidden,follow --walker-skip=.git,node_modules,target ### Walker options in $FZF_DEFAULT_OPTS export FZF_DEFAULT_OPTS="--walker=file,dir,hidden,follow --walker-skip=.git,node_modules,target" fzf ### Reading from STDIN; --walker is ignored seq 100 | fzf --walker=dir ### Reading from $FZF_DEFAULT_COMMAND; --walker is ignored export FZF_DEFAULT_COMMAND='seq 100' fzf --walker=dir ``` - Shell integration scripts have been updated to use the built-in walker with these new options and they are now much faster out of the box. ### [`v0.47.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0470) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.46.1...0.47.0) - Replaced ["the default find command"][find] with a built-in directory walker to simplify the code and to achieve better performance and consistent behavior across platforms. This doesn't affect you if you have `$FZF_DEFAULT_COMMAND` set. - Breaking changes: - Unlike [the previous "find" command][find], the new traversal code will list hidden files, but hidden directories will still be ignored - No filtering of `devtmpfs` or `proc` types - Traversal is parallelized, so the order of the entries will be different each time - You may wonder why fzf implements directory walker anyway when it's a filter program following the [Unix philosophy][unix]. But fzf has had [the walker code for years][walker] to tackle the performance problem on Windows. And I decided to use the same approach on different platforms as well for the benefits listed above. - Built-in walker is using the excellent [charlievieth/fastwalk][fastwalk] library, which easily outperforms its competitors and supports safely following symlinks. - Added `$FZF_DEFAULT_OPTS_FILE` to allow managing default options in a file - See [#3618](https://togithub.com/junegunn/fzf/pull/3618) - Option precedence from lower to higher 1. Options read from `$FZF_DEFAULT_OPTS_FILE` 2. Options from `$FZF_DEFAULT_OPTS` 3. Options from command-line arguments - Bug fixes and improvements [find]: https://togithub.com/junegunn/fzf/blob/0.46.1/src/constants.go#L60-L64 [walker]: https://togithub.com/junegunn/fzf/pull/1847 [fastwalk]: https://togithub.com/charlievieth/fastwalk [unix]: https://en.wikipedia.org/wiki/Unix_philosophy ### [`v0.46.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0461) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.46.0...0.46.1) - Bug fixes and improvements - Fixed Windows binaries - Downgraded Go version to 1.20 to support older versions of Windows - https://tip.golang.org/doc/go1.21#windows - Updated [rivo/uniseg](https://togithub.com/rivo/uniseg) dependency to v0.4.6 ### [`v0.46.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0460) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.45.0...0.46.0) - Added two new events - `result` - triggered when the filtering for the current query is complete and the result list is ready - `resize` - triggered when the terminal size is changed - fzf now exports the following environment variables to the child processes | Variable | Description | | --- | --- | | `FZF_LINES` | Number of lines fzf takes up excluding padding and margin | | `FZF_COLUMNS` | Number of columns fzf takes up excluding padding and margin | | `FZF_TOTAL_COUNT` | Total number of items | | `FZF_MATCH_COUNT` | Number of matched items | | `FZF_SELECT_COUNT` | Number of selected items | | `FZF_QUERY` | Current query string | | `FZF_PROMPT` | Prompt string | | `FZF_ACTION` | The name of the last action performed | - This allows you to write sophisticated transformations like so ```sh ``` ### Script to dynamically resize the preview window transformer=' ### 1 line for info, another for prompt, and 2 more lines for preview window border lines=$(( FZF_LINES - FZF_MATCH_COUNT - 4 )) if [[ $FZF_MATCH_COUNT -eq 0 ]]; then echo "change-preview-window:hidden" elif [[ $lines -gt 3 ]]; then echo "change-preview-window:$lines" elif [[ $FZF_PREVIEW_LINES -ne 3 ]]; then echo "change-preview-window:3" fi ' seq 10000 | fzf --preview 'seq {} 10000' --preview-window up \ --bind "result:transform:$transformer" \ --bind "resize:transform:$transformer" ``` - And we're phasing out `{fzf:prompt}` and `{fzf:action}` - Changed [mattn/go-runewidth](https://togithub.com/mattn/go-runewidth) dependency to [rivo/uniseg](https://togithub.com/rivo/uniseg) for accurate results - Set `--ambidouble` if your terminal displays ambiguous width characters (e.g. box-drawing characters for borders) as 2 columns - `RUNEWIDTH_EASTASIAN=1` is still respected for backward compatibility, but it's recommended that you use this new option instead - Bug fixes ### [`v0.45.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0450) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.44.1...0.45.0) - Added `transform` action to conditionally perform a series of actions ```sh ``` ### [`v0.44.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0441) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.44.0...0.44.1) - Fixed crash when preview window is hidden on `focus` event ### [`v0.44.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0440) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.43.0...0.44.0) - (Experimental) Sixel image support in preview window (not available on Windows) - [bin/fzf-preview.sh](bin/fzf-preview.sh) is added to demonstrate how to display an image using Kitty image protocol or Sixel. You can use it like so: ```sh fzf --preview='fzf-preview.sh {}' ``` - (Experimental) iTerm2 inline image protocol support in preview window (not available on Windows) ```sh ``` ### [`v0.43.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0430) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.42.0...0.43.0) - (Experimental) Added support for Kitty image protocol in the preview window (not available on Windows) ```sh fzf --preview=' if file --mime-type {} | grep -qF image/; then ``` ### --transfer-mode=memory is the fastest option but if you want fzf to be able ### to redraw the image on terminal resize or on 'change-preview-window', ### you need to use --transfer-mode=stream. kitty icat --clear --transfer-mode=memory --unicode-placeholder --stdin=no --place=${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}@0x0 {} | sed \$d else bat --color=always {} fi ' - (Experimental) `--listen` server can report program state in JSON format (`GET /`) ```sh ### [`v0.42.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0420) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.41.1...0.42.0) - Added new info style: `--info=right` - Added new info style: `--info=inline-right` - Added new border style `thinblock` which uses symbols for legacy computing [one eighth block elements](https://en.wikipedia.org/wiki/Symbols_for_Legacy_Computing) - Similarly to `block`, this style is suitable when using a different background color because the window is completely contained within the border. ```sh BAT_THEME=GitHub fzf --info=right --border=thinblock --preview-window=border-thinblock \ --margin=3 --scrollbar=▏▕ --preview='bat --color=always --style=numbers {}' \ --color=light,query:238,fg:238,bg:251,bg+:249,gutter:251,border:248,preview-bg:253 ``` - This style may not render correctly depending on the font and the terminal emulator. ### [`v0.41.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0411) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.41.0...0.41.1) - Fixed a bug where preview window is not updated when `--disabled` is set and a reload is triggered by `change:reload` binding ### [`v0.41.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0410) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.40.0...0.41.0) - Added color name `preview-border` and `preview-scrollbar` - Added new border style `block` which uses [block elements](https://en.wikipedia.org/wiki/Block_Elements) - `--scrollbar` can take two characters, one for the main window, the other for the preview window - Putting it altogether: ```sh fzf-tmux -p 80% --padding 1,2 --preview 'bat --style=plain --color=always {}' \ --color 'bg:237,bg+:235,gutter:237,border:238,scrollbar:236' \ --color 'preview-bg:235,preview-border:236,preview-scrollbar:234' \ --preview-window 'border-block' --border block --scrollbar '▌▐' ``` - Bug fixes and improvements ### [`v0.40.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0400) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.39.0...0.40.0) - Added `zero` event that is triggered when there's no match ```sh ``` ### [`v0.39.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0390) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.38.0...0.39.0) - Added `one` event that is triggered when there's only one match ```sh ``` ### [`v0.38.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0380) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.37.0...0.38.0) - New actions - `become(...)` - Replace the current fzf process with the specified command using `execve(2)` system call. See https://github.com/junegunn/fzf#turning-into-a-different-process for more information. ```sh ``` ### Open selected files in Vim fzf --multi --bind 'enter:become(vim {+})' ### Open the file in Vim and go to the line git grep --line-number . | fzf --delimiter : --nth 3.. --bind 'enter:become(vim {1} +{2})' ``` - This action is not supported on Windows - `show-preview` - `hide-preview` - Bug fixes - `--preview-window 0,hidden` should not execute the preview command until `toggle-preview` action is triggered ### [`v0.37.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0370) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.36.0...0.37.0) - Added a way to customize the separator of inline info ```sh fzf --info 'inline: ╱ ' --prompt '╱ ' --color prompt:bright-yellow ``` - New event - `focus` - Triggered when the focus changes due to a vertical cursor movement or a search result update ```sh fzf --bind 'focus:transform-preview-label:echo [ {} ]' --preview 'cat {}' ``` ### Any action bound to the event runs synchronously and thus can make the interface sluggish ### e.g. lolcat isn't one of the fastest programs, and every cursor movement in ### fzf will be noticeably affected by its execution time fzf --bind 'focus:transform-preview-label:echo [ {} ] | lolcat -f' --preview 'cat {}' ### Beware not to introduce an infinite loop seq 10 | fzf --bind 'focus:up' --cycle ``` - New actions - `change-border-label` - `change-preview-label` - `transform-border-label` - `transform-preview-label` - Bug fixes and improvements ### [`v0.36.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0360) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.35.1...0.36.0) - Added `--listen=HTTP_PORT` option to start HTTP server. It allows external processes to send actions to perform via POST method. ```sh ``` ### [`v0.35.1`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0351) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.35.0...0.35.1) - Fixed a bug where fzf with `--tiebreak=chunk` crashes on inverse match query - Fixed a bug where clicking above fzf would paste escape sequences ### [`v0.35.0`](https://togithub.com/junegunn/fzf/blob/HEAD/CHANGELOG.md#0350) [Compare Source](https://togithub.com/junegunn/fzf/compare/0.34.0...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`. ```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 ```Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.