Skip to content

Getting started ​

F:ist (Fist: Interactive Search Tool) is a fast, keyboard-first file browser and launcher for the terminal. The binary is fs.

Main interface

Overview ​

fs navigates directories, searches them recursively (fd), full-text (ripgrep), and through your own visit history — all in one interface, with the same fuzzy filtering and the same undo/redo stack. This page gets you from nothing to your first useful session.

Install ​

shell
curl -fsSL https://raw.githubusercontent.com/Squirreljetpack/fist/main/install.sh | sh

Via cargo ​

cargo install fist works, but the release binary is the recommended install because it ships with the latest features.

Dependencies ​

fd and ripgrep power the search panes, bat renders previews, and eza lists directories. Optional preview backends: chafa (images), mediainfo (metadata), kreuzberg (document extraction).

shell
cargo install fd-find ripgrep bat eza

Shell integration ​

shell
# Zsh / Bash
eval "$(fs :tool shell)"

# Fish
fs :tool shell --shell=fish | source

# Nushell
fs :tool shell --shell=nu --aliases | save -f ~/.config/nushell/fist.nu
# (then add `source ~/.config/nushell/fist.nu` to config.nu)

This adds the z jump function (type a folder name to cd to your best match), x (jump and navigate), zz (jump and open), and keybinding widgets. See Shell integration for the full story, including aliases and widgets.

Your first session ​

shell
fs

You're in the Nav pane, listing the current directory.

Nav pane

  • Type to fuzzy-filter the listing. Esc clears the query.
  • Enter accepts the current row: directories cd in, files open via lessfilter (the edit preset by default).
  • ← / → move to the parent directory / advance into the selection.
  • ctrl-z / ctrl-shift-z undo and redo your navigation.
  • ? previews the current item.

Core keybindings ​

The complete list is always available in-app (alt-h) or from the shell (fs :tool show-binds). These are the ones you'll reach for daily:

KeysAction
↑ / ↓Move the cursor
EnterAccept (enter directory / open file)
← / →Parent directory / advance into the item
ctrl-z / ctrl-shift-zUndo / Redo pane history
ctrl-fFind — recursive search (fd)
ctrl-rSearch — full-text search (rg)
ctrl-gHistory — visited folders & files
alt-enterPrint the current path (scripting)
tabToggle selection on the current row
ctrl-eMenu of context-aware actions
ctrl-uQueue overlay (pending copy/cut operations)
ctrl-x / ctrl-c / ctrl-vCut / Copy / Paste
delete / shift-deleteTrash / Permanently delete
ctrl-n / ctrl-shift-nNew file / New directory
ctrl-sToggle hidden files
ctrl-dToggle "only directories"
?Preview current item
alt-hHelp overlay
ctrl-escOpen a shell in the current directory

Command line ​

The same features are subcommands. In the find pane, the last positional argument is the pattern; earlier ones are search roots.

shell
fs                      # nav pane (directory browser)
fs pattern              # interactive find (fd)
fs path pattern         # find under a path
fs -t d .               # only directories, current tree
fs :open file.pdf       # open files, record history      (alias :o)
fs :rg "TODO" -p src    # full-text search                (alias :)
fs :file                # recent files
fs :dir                 # recent folders
fs :custom              # browse a piped list of paths    (alias :c)
fs :tool                # utilities                       (alias :t)
fs :info                # database stats

fs --help and per-subcommand help (fs :rg --help) document every flag. fs :tool types prints the full catalog of -t types.

Next steps ​

FAQ ​

Where do my config and data live?

Config: ~/.config/fist/. Database and logs: ~/.local/state/fist/. Helper scripts: ~/.cache/fist/.

Why is the binary called fs?

Fist was designed to sit beside the other two-letter commands (fd, rg, ls). The name is a backronym: Fist: Interactive Search Tool.

Does it work in bash/fish/nushell?

Full shell integration (directory jumping, hooks, aliases, and line-editor widgets) is supported for Zsh, Bash (4.3+), Fish, and Nushell, with core z/x/zz functions available for standard POSIX shells (sh, dash, ash, ksh).