diff --git a/init.sh b/init.sh index f15ee6c..0d78239 100755 --- a/init.sh +++ b/init.sh @@ -9,7 +9,7 @@ echo "PKGUPD: ${PKGUPD}" echo "PKGINST: ${PKGINST}" # Install zsh, neovim, ripgrep, fd -[[ $PKGINST != '' ]] && $PKGUPD && $PKGINST curl tmux zsh ripgrep fd-find fzf +[[ $PKGINST != '' ]] && $PKGUPD && $PKGINST curl tmux zsh ripgrep fd-find fzf tree # Install neovim pushd /tmp || true diff --git a/zsh/config.d/fzf.zsh b/zsh/config.d/fzf.zsh new file mode 100644 index 0000000..e66c240 --- /dev/null +++ b/zsh/config.d/fzf.zsh @@ -0,0 +1,29 @@ +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 +}