Files
dotfiles/functions/fz.sh
2024-08-09 12:27:45 +02:00

29 lines
800 B
Bash

# Search z history with fzf
fz() {
# Check if z is installed
if ! command -v _z >/dev/null 2>&1; then
echo "Error: z is not installed or not in PATH"
return 1
fi
# If arguments are provided, use z directly
if [ $# -gt 0 ]; then
_z "$*" && return
fi
# Use fzf to select from z history
local dir
dir=$(_z -l 2>&1 | sed 's/^[0-9,.]* *//' |
fzf --height 40% --nth 1.. --reverse --inline-info +s --tac --query "${*##-* }" \
--preview 'ls -l {}' \
--preview-window right:50% \
--bind 'ctrl-/:change-preview-window(down|hidden|)' \
--header 'Press CTRL-/ to toggle preview window')
# Change to the selected directory
if [ -n "$dir" ]; then
cd "$dir" || return 1
fi
}