/fzf-marks

Plugin to manage bookmarks in bash and zsh

Primary LanguageShellMIT LicenseMIT

fzf-marks

This plugin can be used to create, delete, and navigate marks in bash and zsh. It depends on Junegunn Choi's fuzzy-finder fzf.

(This video was generated with screenkey -g $(slop -n -f '%g') and simplescreenrecorder.)

Installation

If you use zsh, I recommend installing with a plugin manager. In the case of zgen, for example, simply add the following line to your plugin list:

    zgen load urbainvaes/fzf-marks

If you use bash, or if you use zsh without a plugin manager, source the file fzf-marks.plugin.bash or fzf-marks.plugin.zsh from your shell startup file to enable the plugin.

Bash installation example:

# Clone the git repository in the current directory
git clone https://github.com/urbainvaes/fzf-marks.git

# Add a line to ~/.bashrc to load the plugin whenever bash starts in interactive mode
echo "source $PWD/fzf-marks/fzf-marks.plugin.bash" >> ~/.bashrc

# Source the plugin now so we don't have to restart bash to start using it
source fzf-marks/fzf-marks.plugin.bash

Usage

The script exposes two functions:

  • mark <mark>, to register a new mark to the current directory;
  • fzm [<optional-initial-query>], to jump to or delete a mark using fzf.

Most of the keybindings in the search window are the default fzf ones. The only additions are

  • ctrl-y, to jump to a match;
  • ctrl-t, to toggle a match for deletion;
  • ctrl-d, to delete selected matches.

By default, the plugin binds the key ctrl-g to fzm.

Customization

Config Default Description
FZF_MARKS_FILE ${HOME}/.fzf-marks File containing the marks data
FZF_MARKS_COMMAND fzf --height 40% --reverse Command used to call fzf
FZF_MARKS_JUMP \C-g (bash) or ^g (zsh) Keybinding to fzm
FZF_MARKS_COLOR_LHS 39 (default) ANSI color code of left-hand side
FZF_MARKS_COLOR_RHS 36 (cyan) ANSI color code of right-hand side
FZF_MARKS_COLOR_COLON 33 (yellow) ANSI color code of separator
FZF_MARKS_NO_COLORS 0 Set this to 1 to disable colors
FZF_MARKS_KEEP_ORDER 0 Set this to 1 to keep order of marks

See e.g. here for a description of ANSI color codes.

License

MIT