Home

Awesome

fav

Archived

This projecthas been archived. Please, take a look at FM which integratesx the same functionalities, plush much more.

Overview

zsh/fzf plugin: easily add and recall named favorites of your important directories and files. You can create, delete and autocomplete persistent aliases on the fly, or quickly search them with fzf and paste them in the prompt line.

Usage

Add favorite

Add any dir or file as a favorite:

~/repos/dd/oss/ruby/pagy $ fav add
[ADDED]  D  pagy  /home/dd/repos/dd/oss/ruby/pagy

~/repos/dd/oss/ruby/pagy $ fav add -f CHANGELOG.md
[ADDED]  F  CHANGELOG.md  /home/dd/repos/dd/oss/ruby/pagy/CHANGELOG.md

Add arbitrary named favorites:

~/repos/dd/oss/docker/files $ fav add docf
[ADDED]  D  docf /home/dd/repos/dd/oss/docker/files

/opt/vivaldi/resources/vivaldi/hooks $ fav add vivh
[ADDED]  D  vivh  /opt/vivaldi/resources/vivaldi/hooks

~/repos/dd/oss/ruby/pagy $ fav add -f README.md pagy-readme
[ADDED]  F  pagy-readme  /home/dd/repos/dd/oss/ruby/pagy/README.md

Use the favorite shortcuts

Use the saved favorite names in place of the actual dirs or files:

~ $ cd ~pagy           # normal cd
~ $ ~pagy              # cd with AUTO_CD zsh option
~ $ ~pa<tab><enter>    # completes ~pagy and cd to it
~ $ pagy               # cd with AUTO_CD + CDABLE_VARS zsh options
~ $ pagy/lib/extras    # cd with AUTO_CD + CDABLE_VARS zsh options in sub-path
~ $ nano ~pagy-readme  # use the file using its fav name

Use the fzf widget

Use the fzf widget to search the favs and insert in the ZLE buffer:

~ $ ls <alt-v>
<pick one or more favorites with fzf>
~ $ ls ~docf ~pagy
...
~ $ cat <alt-v>
<pick one or more favorites with fzf>
~ $ cat ~pagy-readme CHANGELOG.md
...

List favorites

List the favorites (ordered by -name):

~ $ fav list -name
F  CHANGELOG.md  /home/dd/repos/dd/oss/ruby/pagy/CHANGELOG.md
D  docf          /home/dd/repos/dd/oss/docker/files
?  old           /path/old
?  older         /path/older
D  pagy          /home/dd/repos/dd/oss/ruby/pagy
F  pagy-readme   /home/dd/repos/dd/oss/ruby/pagy/README.md
D  vivh          /opt/vivaldi/resources/vivaldi/hooks

Notice: you can also enable the icons from the Nerd Fonts instead of just F D ? in the first column

Remove favorites

Remove named favorite(s):

~ $ fav remove doc     # autocompletes (if only one matches) or opens the fzf panel
[REMOVED]  D  docf  /home/dd/repos/dd/oss/docker/files

Remove selected favorites with fzf panel:

~ $ fav remove
<pick one or more favs with fzf>
[REMOVED]  D  vivh  /opt/vivaldi/resources/vivaldi/hooks

Clean unknown paths

Removes all the favorites pointing to a unknown path:

~ $ fav clean
[REMOVED]  ?  old    /path/old
[REMOVED]  ?  older  /path/older

Install

Make sure you have fzf installed.

with zplug

zplug "ddnexus/fav"

with zgen

zgen load ddnexus/fav

with antigen

antigen bundle ddnexus/fav

Manually

Add source "/your/path/to/fav.plugin.zsh" in your ~/.zshrc.

Commands

CommandAction
add [-f FILE] [NAME]Add the current dir or the FILE in it as NAME. If missing, NAME is generated based on basename $PWD or FILE
~NAMEGenerated alias that expands to the full favorite path, internally declared with hash -d NAME=/favorite/path (see man zshbuiltins /hash)
fav remove [QUERY]Remove selected favorites: fav matches the optional QUERY to NAME and removes it if it gets a single match. No QUERY or multiple matches open the fzf panel
fav list [ORDER]Print the list of all the favorites. ORDER order can be -type, -name, -path or -time or reversed with -rtype, -rname, -rpath or -rtime (default -time)
fav cleanRemove all the favorites pointing to an unknown path
fav envShow the value of variables and options
fav helpShow an usage screen
alt-vDefault FAV_WIDGET_KEY binding to the fav::widget. It opens the fzf panel listing all favs. It pastes the selected favorites into the ZLE buffer

Options

VariableDescriptionDefault
FAV_WIDGET_KEYKey binding^[v (alt-v)
FAV_FILEPath to the data file$HOME/.fav
FAV_FZF_OPTSExtra fzf string of options to override the FZF_DEFAULT_OPTS (see man fzf /options)--height=50% --inline-info --exact --preview-window=noborder --reverse
FAV_DIR_PREVIEW_CMDCommand used to populate the fzf preview panel for dirs`exa
FAV_FILE_PREVIEW_CMDCommand used to populate the fzf preview panel for files`bat
FAV_ENABLE_ICONSEnable icons from fonts like Nerd Fonts (true|false)false
FAV_DIR_ICONIcon string for dirsD
FAV_FILE_ICONIcon string for filesF
FAV_UNKNOWN_ICONIcon string for unknown paths?
FAV_ORDERKeep the favorite list ordered by -type, -name, -path or -time or reversed with -rtype, -rname, -rpath or -rtime.-time

Suggestions

License

This software is available as open source under the terms of the MIT License.


Copyright © 2020 Domizio Demichelis