fzfX multiplies the power of fzf by providing zero-configuration battle-tested applications to common use cases of fzf. It delivers the power of finding, previewing, editing and managing any file in few key strokes.
It is agnostic and does not require a specific terminal emulator, desktop environment or text editor. It builds on modern CLI tools: fzf, fd and ripgrep are required, while bat, rga, grc, tree and others are optional and gracefully fall back to classic counterparts like cat and ls when absent.
fzfxBy default it will use $HOME as the search path but that can be overrided or disabled entirely.
Optionally the search path can be inputted in the command. Which will also work for other modes.
fzfx <searchPath>fzfx hiddenBy default hidden files, cache/vendor directories like node_modules (see /usr/share/fzfx/ignore) are ignored and .gitignore files inside directories are followed.
fzfx fullNote: Supports regular expressions.
fzfx cdTo change dir with ENTER create an alias:
alias fcd='cd "$(fzfx cd)"'Note: Needed because a child shell can't act on its parent.
If you don't know how aliases work, try using this configuration as an example.
Note: Aliases must be put or be sourced in .profile or RC files like .bashrc so to work persistently.
fzfx cpfzfx mvfzfx ps# markdown notes
fzfx md
# pdf, ps and eps
fzfx pdf
# pictures
fzfx pic
# audio and videos
fzfx avInstall through the AUR.
sudo make install # installs under /usr/local
sudo make PREFIX=/usr install # mirror the system package layoutRemove it with sudo make uninstall (pass the same PREFIX).
Copy the bundled example and edit it:
cp /usr/share/fzfx/config.example "${XDG_CONFIG_HOME:-$HOME/.config}/fzfx/config"- Set
searchPathto override the global search path. - Set
searchLocal=trueto always search locally. - Set
editorto override the editor used by fzfx. - Set
clipboardto override the clipboard command (auto-detected:wl-copy,xcliporpbcopy). - Set
ignoreFileto override the default ignore file (.gitignore style). - Set
defaultPreview,pdfView,avView,picViewto whatever you prefer.
Note: All configurations are optional.
Enable the bundled git hooks (runs shellcheck on commit):
make install-hooks