v0.65.0

junegunn/fzfv0.65.0Jul 27, 2025by junegunn

AI Summary

Adds footer support, click events, trigger actions, and new placeholders like `{*n}` for ordinal indices.

Key Highlights

  • New `click-footer` event triggered when the footer is clicked, setting environment variables for column, line, and word.
  • New `trigger(...)` action allows triggering events bound to other keys or events.
  • New placeholders `{*n}` (zero-based ordinal) and `{*nf}` (temp file) for matches.
  • Background transform actions (`bg-` prefix) run asynchronously.

New Features

  • `click-footer` event
  • `trigger(...)` action
  • `{*n}` and `{*nf}` placeholders
  • Background transform actions

Full Release Notes

- Added `click-footer` event that is triggered when the footer section is clicked. When the event is triggered, the following environment variables are set:
    - `$FZF_CLICK_FOOTER_COLUMN` - clicked column (1-based)
    - `$FZF_CLICK_FOOTER_LINE` - clicked line (1-based)
    - `$FZF_CLICK_FOOTER_WORD` - the word under the cursor
  ```sh
  fzf --footer $'[Edit] [View]\n[Copy to clipboard]' \
      --with-shell 'bash -c' \
      --bind 'click-footer:transform:
        [[ $FZF_CLICK_FOOTER_WORD =~ Edit ]] && echo "execute:vim \{}"
        [[ $FZF_CLICK_FOOTER_WORD =~ View ]] && echo "execute:view \{}"
        (( FZF_CLICK_FOOTER_LINE == 2 )) && (( FZF_CLICK_FOOTER_COLUMN < 20 )) &&
            echo "execute-silent(echo -n \{} | pbcopy)+bell"
      '
  ```
- Added `trigger(...)` action that triggers events bound to another key or event.
  ```sh
  # You can click on each key name to trigger the actions bound to that key
  fzf --footer 'Ctrl-E: Edit / Ctrl-V: View / Ctrl-Y: Copy to clipboard' \
      --with-shell 'bash -c' \
      --bind 'ctrl-e:execute:vim {}' \
      --bind 'ctrl-v:execute:view {}' \
      --bind 'ctrl-y:execute-silent(echo -n {} | pbcopy)+bell' \
      --bind 'click-footer:transform:
        [[ $FZF_CLICK_FOOTER_WORD =~ Ctrl ]] && echo "trigger(${FZF_CLICK_FOOTER_WORD%:})"
      '
  ```
    - You can specify a series of keys and events
      ```sh
      fzf --bind 'a:up,b:trigger(a,a,a)'
      ```
- Added support for `{*n}` and `{*nf}` placeholder.
    - `{*n}` evaluates to the zero-based ordinal index of all matched items.
    - `{*nf}` evaluates to the temporary file containing that.
- Bug fixes and improvements
    - [neovim] Fixed margin background color when `&winborder` is used (#4453)
    - Fixed rendering error when hiding a preview window without border (#4465)
    - fix(shell): check for mawk existence before version check (#4468)
        - Thanks to @LangLangBart and @akinomyoga
    - Fixed `--no-header-lines-border` behavior (08027e7a)