30 lines
621 B
Bash
30 lines
621 B
Bash
cdf_preview() {
|
|
if [ -d $1 ]; then
|
|
tree -L 1 $1
|
|
else
|
|
cat $1
|
|
fi
|
|
}
|
|
# cdf - cd with fuzzy finder
|
|
# Usage: cdf [path]
|
|
cdf() {
|
|
local fd_options fzf_options target
|
|
|
|
fd_options=(
|
|
--hidden
|
|
)
|
|
|
|
fzf_options=(
|
|
# --preview='echo {}'
|
|
--preview='([[ -d {} ]] && tree -L 1 {}) || ([[ -L {} ]] && ls -al {}) || cat {}'
|
|
--bind=ctrl-space:toggle-preview
|
|
--exit-0
|
|
)
|
|
|
|
target="$(fdfind . "${1:-.}" "${fd_options[@]}" | fzf "${fzf_options[@]}")"
|
|
|
|
([[ -f "$target" ]] || [[ -L "$target" ]]) && target="${target%/*}"
|
|
|
|
cd "$target" || return 1
|
|
}
|