Skip to content

Migration Guides

Patrick Fong edited this page Nov 5, 2023 · 26 revisions

What if I'm not ready to migrate?

Don't like the new changes? Don't have enough time to migrate? Freeze your plugin at its current version and update when you're ready. See the Cookbook.

Search Directory's and Search Variable's custom fzf opts variables (used to configure fzf options for specific commands) were renamed in v9.5. Now the old, deprecated names have been completely removed.

  • Search Directory: if you use fzf_dir_opts, switch to fzf_directory_opts
  • Search Variables: if you use fzf_shell_vars_opts, switch to fzf_variables_opts

fzf minimum version now 0.33, up from 0.27.2. If you are using anything under 0.33, you will need to upgrade or Search Git Log and Search History will not work.

Search directory's key binding changed

The default key binding for search directory has been changed from Ctrl+F to Ctrl+Alt+F. To revert to the original binding, add this to your config.fish:

fzf_configure_bindings --directory=\cf

Custom key binding mechanism completely replaced

The former method DIY bindings with fzf_fish_custom_keybindings has been replaced with fzf_configure_bindings. Users who customize their bindings must migrate to this function because fzf_fish_custom_keybindings no longer exists and all the private function names have been renamed. Thankfully, it should only take one invocation of fzf_configure_bindings to port over all your custom bindings:

  1. Make sure you are on fish 3.2.0 or higher. fzf.fish's minimum version requirements were raised in v6.2.
  2. Read fzf_configure_bindings --help
  3. Play around with it on your command line until you've achieve your desired set of key bindings. There are no side effects of repeatedly executing it in the same session.
  4. Add your fzf_configure_bindings command to your config.fish: it is safe to do so and it is expected to live there if you want your changes to persist.

Users who did not customize their bindings (probably because doing so was tedious and hacky) are encouraged to use this to customize their bindings to their hearts' content now that this is a much smoother process.

If you do not use custom key bindings, there is nothing you need to do to upgrade to v5. However, if you do, you need to update your key binding to call __fzf_search_current_dir with two new arguments:

# If you use custom key bindings, change this...
bind \cv '__fzf_search_current_dir'
bind --mode insert \cv '__fzf_search_current_dir'

# ...to this...
set --local search_vars_cmd '__fzf_search_shell_variables (set --show | psub) (set --names | psub)'
bind \cv $search_vars_cmd
bind --mode insert \cv $search_vars_cmd

See conf.d/fzf.fish for more details.

After much feedback around Search Git Log's Ctrl+L key binding conflicting with clear screen, I have decided to change its key binding to Ctrl+Alt+L. An alternative option I considered was just Alt+L, which is shorter but I realized conflicts with __fish_list_current_token, which is actually quite useful.