feat(shell): Quick Jump to frequently used directories

This commit is contained in:
js0ny 2025-02-27 03:04:31 +00:00
parent 2c014e281f
commit bab5604731
3 changed files with 65 additions and 62 deletions

View file

@ -154,3 +154,4 @@ end
function __last_history_item; echo $history[1]; end function __last_history_item; echo $history[1]; end
abbr -a !! --position anywhere --function __last_history_item abbr -a !! --position anywhere --function __last_history_item

View file

@ -7,28 +7,41 @@
# Linking: Link the whole directory for submodules # Linking: Link the whole directory for submodules
# ln -sf $DOTFILES/tools/fish ~/.config/fish # ln -sf $DOTFILES/tools/fish ~/.config/fish
set __CD_CMD "cd"
if command -v zoxide > /dev/null if command -v zoxide > /dev/null
set __CD_CMD "z"
zoxide init fish | source zoxide init fish | source
alias ..="z .." end
alias ...="z ../.."
alias ....="z ../../.."
alias .....="z ../../../.."
alias ......="z ../../../../.."
abbr --add \- 'z -'
alias ..="$__CD_CMD .."
alias ...="$__CD_CMD ../.."
alias ....="$__CD_CMD ../../.."
alias .....="$__CD_CMD ../../../.."
alias ......="$__CD_CMD ../../../../.."
abbr --add \- "$__CD_CMD -"
function zls function zls
z $argv[1] && ls $__CD_CMD $argv[1] && ls
end end
else
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ......="cd ../../../../.."
abbr --add \- 'cd -' alias cdls=zls
function __source_quick_jump
set dir (fd --type d --max-depth 1 . ~/Source/ | fzf --preview 'lsd --color always --icon always {}')
if test -n "$dir"
cd "$dir"
end end
end
# Quick Jump Directories
test -d $DOTFILES && abbr --add dot "$__CD_CMD $DOTFILES"
test -d $HOME/Downloads && abbr --add down "$__CD_CMD $HOME/Downloads"
test -d $HOME/.config && abbr --add conf "$__CD_CMD $HOME/.config"
test -d $HOME/Obsidian && abbr --add ob "$__CD_CMD $HOME/Obsidian"
test -d $HOME/Source && alias src="__source_quick_jump"
test -d $HOME/Source/Scripts && alias scr="fd --type f --hidden --exclude .git --exclude '.*' . ~/Source/Scripts/ | fzf --preview 'bat --color=always --style=numbers {}' | xargs -r nvim"
test -d $HOME/OrgFiles && abbr --add org "$__CD_CMD $HOME/OrgFiles"

View file

@ -3,48 +3,37 @@
# Author: js0ny # Author: js0ny
# Sourced by user's zshrc 在用户的 zshrc 中被引用 # Sourced by user's zshrc 在用户的 zshrc 中被引用
# Absolute navigation #
alias dotfiles="cd $DOTFILES && ls"
if [ "$IS_WSL" = true ]; then # IS_WSL is defined in $DOTFILES/platforms/wsl/zshrc
winuser=$(whoami.exe | cut -d'\' -f2 | tr -d '\r')
alias dt="cd /mnt/c/Users/$winuser/Desktop && ls"
alias doku="cd /mnt/c/Users/$winuser/Documents && ls"
alias down="cd /mnt/c/Users/$winuser/Downloads && ls"
alias src="cd /mnt/d/Source"
alias one="cd /mnt/c/Users/$winuser/OneDrive"
alias gdrive="cd /mnt/g"
else
alias dt="cd $HOME/Desktop && ls"
alias doku="cd $HOME/Documents && ls"
alias down="cd $HOME/Downloads && ls"
alias src="cd $HOME/Documents/Source"
fi
# macOS specific, no OneDrive & Google Drive on Linux # Define __CD_CMD as "cd" by default
if [ "$(uname)" = "Darwin" ]; then __CD_CMD="cd"
alias one="cd $HOME/OneDrive"
alias gdrive="cd $HOME/Google Drive"
fi
if command -v zoxide >/dev/null 2>&1; then # If zoxide is available, use it
if command -v zoxide >/dev/null; then
__CD_CMD="z"
eval "$(zoxide init zsh)" eval "$(zoxide init zsh)"
# Relative navigation #
alias ..="z .."
alias ...="z ../.."
alias ....="z ../../.."
alias .....="z ../../../.."
alias ......="z ../../../../.."
# Use `-` to jump to the previous directory
# Oh-My-Zsh defines a similar one
alias - "z -"
zls() {
cd $1 && ls
}
else
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ......="cd ../../../../.."
alias - "cd -"
fi fi
# Define aliases for quick navigation
alias ..="$__CD_CMD .."
alias ...="$__CD_CMD ../.."
alias ....="$__CD_CMD ../../.."
alias .....="$__CD_CMD ../../../.."
alias ......="$__CD_CMD ../../../../.."
# Abbreviation for "cd -"
alias - "$__CD_CMD -"
# Define zls function for cd + ls
zls() {
"$__CD_CMD" "$1" && ls
}
alias cdls=zls
# Quick Jump Directories
[[ -d "$DOTFILES" ]] && alias dot="$__CD_CMD $DOTFILES"
[[ -d "$HOME/Downloads" ]] && alias down="$__CD_CMD $HOME/Downloads"
[[ -d "$HOME/.config" ]] && alias conf="$__CD_CMD $HOME/.config"
[[ -d "$HOME/Obsidian" ]] && alias ob="$__CD_CMD $HOME/Obsidian"
[[ -d "$HOME/Source" ]] && alias src="$__CD_CMD $HOME/Source"
[[ -d "$HOME/Source/Scripts" ]] && alias scr="$__CD_CMD $HOME/Source/Scripts"
[[ -d "$HOME/OrgFiles" ]] && alias org="$__CD_CMD $HOME/OrgFiles"