• Stars
    star
    475
  • Rank 92,465 (Top 2 %)
  • Language
    Shell
  • License
    MIT License
  • Created over 9 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Plugin to manage bookmarks in bash and zsh

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

Zsh

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

Fish

If you use fish, then you can use fisher:

fisher install urbainvaes/fzf-marks

Bash

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.

Fig

You can use Fig to install fzf-marks on zsh, fish, or bash with just one click.

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

Enabling completion:

In bash, completion should be available automatically. In zsh, completion needs to be enabled explicitly before sourcing the plugin. This is usually done automatically by plugin managers, but it can also be achieved manually with the following command in your .zshrc.

autoload -Uz compinit && compinit

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.

FAQ

Question: Is it possible to limit the fzf search to the mark label, i.e. to exclude the path from the search?

Yes, this is possible by passing the options -n (for the field number to use for the search) and -d (for the delimiter) to fzf. For example,

FZF_MARKS_COMMAND="fzf --height 40% --reverse -n 1 -d ' : '"

License

MIT