fzf: 0.73.0

0.73.0 #

(May 2026)

Quick summary #

This release adds Nushell integration, a new preview window position, and timer-driven bindings backed by an idle-time environment variable.

TypeClassNameDescription
NewShellNushellfzf --nushell and installer support
NewOption--preview-window=nextPreview adjacent to the input section
NewEventevery(N)Timer-driven event for --bind
NewEnv var$FZF_IDLE_TIMESeconds since the last user activity
NewEnv var$FZF_IDLE_TIME_MSMilliseconds since the last user activity
NewEnv var$FZF_CURRENT_ITEMCurrent item, for shells where {} is awkward

1. Nushell integration #

Nushell joins the list of shells with built-in fzf integration (#4630) (@sim590). The install script sets it up for you, dropping the generated file into Nushell’s autoload directory. To set it up manually:

mkdir ($nu.default-config-dir | path join "autoload")
fzf --nushell | save -f ($nu.default-config-dir | path join "autoload" "_fzf_integration.nu")

Nushell does not support piping into source, so the script has to live in the autoload directory rather than being sourced inline like the other shells.

Info

This is the initial Nushell support; please report any rough edges.

2. --preview-window=next #

--preview-window learned a new next position that places the preview adjacent to the input section, on the list side:

  • Above the input in the default layout
  • Below it in --layout=reverse
fzf --preview 'cat {}' --preview-window next

This complements existing positions (up, down, left, right) when you want the preview to track the input rather than the list area.

3. Timer-driven bindings with every(N) #

A new every(N) event fires every N seconds, where N is a whole number. Bind it with --bind to run actions on a regular cadence.

Two new environment variables, $FZF_IDLE_TIME (whole seconds) and $FZF_IDLE_TIME_MS (milliseconds), hold the elapsed time since the last user activity. Combined with every(N), they enable idle-based behavior such as auto-refresh, auto-accept, or auto-quit (#1211).

Live process list #

--track --id-nth 2 keeps the cursor on the same PID across reloads.

fzf --header-lines 1 --track --id-nth 2 --bind 'start,every(2):reload-sync:ps -ef'

Auto-accept after inactivity #

Auto-accept after 10 seconds of inactivity, with a countdown in the footer after 5s:

fzf --bind 'every(1):bg-transform:
  if   [[ $FZF_IDLE_TIME -lt 5  ]]; then echo change-footer:
  elif [[ $FZF_IDLE_TIME -lt 10 ]]; then echo "change-footer:auto-accept in $((10 - FZF_IDLE_TIME))s"
  else echo accept
  fi'

4. $FZF_CURRENT_ITEM #

$FZF_CURRENT_ITEM exposes the current item to child processes, for shells where quoting {} in --preview or execute is awkward (#4802).

Bug fixes #

  • Scoring: non-word characters at the start of input or after a delimiter now receive the same boundary bonus as word characters (#4795)
  • change-preview-window no longer resets wrap / wrap-word state set via toggle-preview-wrap / toggle-preview-wrap-word (#4791)
  • Stripped UTF-8-encoded C1 control characters from rendered items to prevent terminal control-sequence injection
  • Fixed integer-overflow panic in FuzzyMatchV2 on 32-bit builds (Michal Majchrowicz, Marcin Wyczechowski, AFINE Team)
  • Fixed bg-transform reload / exclude payloads being dropped
  • Fixed rendering glitch with preview window on the left combined with footer
Last modified: May 24, 2026
Copyright © 2025 Junegunn Choi