56 lines
1.5 KiB
Bash
56 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# https://zoxide.org/blog/zoxide-download-guide/
|
|
# https://zoxide.org/blog/zoxide-alias-autocomplete/
|
|
# cargo install --force zoxide
|
|
#
|
|
DEST=${1:-/etc/skel}
|
|
|
|
sudo apt update
|
|
sudo apt install -y zoxide
|
|
|
|
# This initializes zoxide and sets up the 'cd' alias automatically
|
|
# eval "$(zoxide init zsh --cmd cd)"
|
|
|
|
# What this does:
|
|
# * cd now uses zoxide's fuzzy logic.
|
|
# * cd .. still goes up one directory.
|
|
# * cd /tmp still goes to an absolute path.
|
|
# * But cd foo will jump to your most frequent foo directory, even if it's
|
|
# deep in your file system.
|
|
#
|
|
# Note: If you use this, the z command will still exist, but cd becomes your
|
|
# daily driver.
|
|
|
|
# Example: Zsh Lazy Load Script
|
|
# z() {
|
|
# unfunction "$0"
|
|
# eval "$(zoxide init zsh)"
|
|
# $0 "$@"
|
|
# }
|
|
|
|
# ⚠️ Warning: The downside of lazy loading is that zoxide won't record directory
|
|
# changes until after you run z for the first time in that session. If you open
|
|
# a terminal, cd around manually, and then close it without ever running z, those
|
|
# paths won't be saved to the database.
|
|
|
|
conf_print_zshrc() {
|
|
cat <<-'EOF'
|
|
eval "$(zoxide init zsh --cmd cd)"
|
|
EOF
|
|
}
|
|
conf_print_zshrc | tee "${DEST}/.zshrc.d/004_zoxide.zsh"
|
|
|
|
# z and zi aliaes are part of the eval above.
|
|
# Alias for interactive selection using fzf
|
|
# alias zi='__zoxide_zi'
|
|
conf_print_zsh_alias() {
|
|
cat <<-'EOF'
|
|
alias z='__zoxide_z'
|
|
alias zi='__zoxide_zi'
|
|
alias j='z'
|
|
alias jj='zi'
|
|
EOF
|
|
}
|
|
conf_print_zsh_alias | tee "${DEST}/.zsh_aliases.d/004_zoxide.zsh"
|