0.48.0

junegunn/fzf0.48.0Mar 13, 2024by junegunn

Upgrading?

Release notes summary

Embedded shell integration scripts directly into the binary and introduced a customizable built-in walker for file discovery.

Key Highlights

  • Shell integration scripts are now embedded in the fzf binary for bash, zsh, and fish.
  • Added `--walker` options for customizing file discovery behavior.
  • Added `--walker-root` and `--walker-skip` options for directory traversal.
  • Shell integration scripts now use the built-in walker for better performance.

New Features

  • Embedded shell scripts
  • --walker option
  • --walker-root option
  • --walker-skip option

Full Release Notes

- 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.

Related Repositories