Crates.io | shmarks |
lib.rs | shmarks |
version | 0.1.13 |
source | src |
created_at | 2023-12-31 16:22:56.597755 |
updated_at | 2024-03-21 13:58:07.487764 |
description | Directory bookmarks for the shell. |
homepage | https://github.com/ybda/shmarks |
repository | https://github.com/ybda/shmarks |
max_upload_size | |
id | 1084897 |
size | 75,738 |
Create, remove, view sorted (by bookmark names of directory paths) bookmarks of your favorite directories
Install binary
> cargo +nightly install shmarks --locked
Add code in your .zshrc (should work with little changes in other shells as well)
Adding this into your directory of plugins might be a more clean option (include in .zshrc with source plugins_dir/shmarks.zsh
)
export SHMARKS_LIST_PATH="$HOME/.local/share/shmarks.toml" # place where your shell bookmarks (shmarks) stored
export SHMARKS_AUTO_SORT="d" # sort on adding new alias: a = by aliases, d = by directories, otherwise no sorting
export SHMARKS_DEFAULT_ALIAS="dd" # default alias to jump into if no alias name was provided
# Jump by alias
f() {
if [[ $# -eq 0 ]]; then
# jump to default dir if no arguments provided
cd "$(shmarks -a "$SHMARKS_DEFAULT_ALIAS")"
else
cd "$(shmarks -a "$@")"
fi
}
# Might be interesting to you
alias s='shmarks' # shortcut for 'shmarks' binary
alias p='shmarks ls -d' # colored list print with directories
alias se="$EDITOR "$SHMARKS_LIST_PATH"" # edit shmarks
alias pf='shmarks ls -d | rg' # find in print of directories
# fzf jumper
sf() {
local choice="$(shmarks ls -dp | fzf)"
if [ -n "$choice" ]; then
local dir="$(echo "$choice" | awk '{print $2}')"
cd "$dir"
fi
}
# Autocompletion of alias
_shmarks_compzsh() {
reply=($(shmarks ls))
}
compctl -K _shmarks_compzsh f # change 'f' to alias set for jumping (6th line)
> shmarks
Directory bookmarks for the shell.
Usage: shmarks [OPTIONS]
shmarks <COMMAND>
Commands:
new Create new mark. Creates mark for current directory by default [aliases: n]
rm Remove mark. Removes mark of current dir if no args provided [aliases: r]
ls List all marks [aliases: l]
sort Sort shmarks file [aliases: s]
help Print this message or the help of the given subcommand(s)
Options:
-a, --alias <ALIAS> Alias of the directory to jump into
-h, --help Print help
-V, --version Print version
Jump by alias 'default' into default dir
> f
Jump by alias
> f myalias
Edit marks file in $EDITOR
> se
Save current dir (pwd) to shmarks and sort shmarks file if $SHMARKS_AUTO_SORT was set
> shmarks new myalias
> s n myalias
Save specified dir to shmarks
> shmarks new myalias /my/dir
Remove current dir from shmarks
> shmarks rm
Remove alias specified by its directory path
> shmarks rm -d /my/dir
Remove alias specified by its name
> shmarks rm -a myalias
List all saved marks like plain GNU "ls" utility
> shmarks ls
List all saved marks like "/bin/ls -l" in columns with dirs showed, colored
> shmarks ls -d
> p
Sort shmarks by directories (alphabetical order)
> shmarks sort -d