My build of nnn with minor changes
Vous ne pouvez pas sélectionner plus de 25 sujets
Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
|
- #!/usr/bin/env sh
-
- # Description: Use named bookmarks using symlinks
- #
- # Dependencies: fzf
- #
- # Usage:
- # 1. Create a $BOOKMARKS_DIR directory
- # By default, $BOOKMARKS_DIR is set to: ${XDG_CACHE_HOME:-$HOME/.cache}/nnn/bookmarks
- #
- # 2. Create symlinks to directories
- # `cd $BOOKMARKS_DIR`
- # `ln -s /path/to/useful/directory bookmark_name`
- # `ln -s $XDG_CONFIG_HOME/nnn/plugins nnn_plugins"
- # `ln -s /path/to/documents docs`
- # `ln -s /path/to/media media`
- # `ln -s /path/to/movies movies`
- #
- # Bonus tip: Add `$BOOKMARKS_DIR` to your `$CDPATH`
- # https://linux.101hacks.com/cd-command/cdpath/
- #
- # TODO:
- # 1. Remove `fzf` dependency
- #
- # Shell: POSIX compliant
- # Author: Todd Yamakawa
-
- if [ -z "$BOOKMARKS_DIR" ]; then
- BOOKMARKS_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/nnn/bookmarks"
- fi
-
- # Check if NNN_PIPE is set
- if [ -z "$NNN_PIPE" ]; then
- echo 'ERROR: NNN_PIPE is not set' | ${PAGER:-less}
- exit 2
- fi
-
- # Get all directory symlinks
- get_links() {
- for entry in "$1"/*; do
-
- # Skip unless directory symlink
- [ -h "$entry" ] || continue
- [ -d "$entry" ] || continue
-
- printf "%20s -> %s\n" "$(basename "$entry")" "$(readlink -f "$entry")"
- done | fzf |
- awk 'END {
- if (length($1) == 0) { print "'"$PWD"'" }
- else { print "'"$BOOKMARKS_DIR"'/"$1 }
- }'
- }
-
- # Choose symlink with fzf
- cddir="$(get_links "$BOOKMARKS_DIR")"
-
- # Writing result to NNN_PIPE will change nnn's active directory
- # https://github.com/jarun/nnn/tree/master/plugins#send-data-to-nnn
- context=0
- printf "%s" "${context}c$(readlink -f "$cddir")" > "$NNN_PIPE"
|