Add optional parameter to cdf and pwdf

This commit is contained in:
Yan Lin 2025-09-11 20:53:40 +02:00
parent 0bb4914b21
commit 0f25994737

View file

@ -95,8 +95,9 @@ in
# Function to cd to directory containing a file selected with fzf # Function to cd to directory containing a file selected with fzf
function cdf() { function cdf() {
local search_dir="''${1:-~}"
local target local target
target=$(echo "" | fzf --bind "change:reload:fd --hidden --follow --exclude .git {q} ~ 2>/dev/null || true" --header="Type to search, Enter to cd" --preview '([[ -d {} ]] && ls -la {}) || ([[ -f {} ]] && head -20 {})' --height 40% --ansi) target=$(echo "" | fzf --bind "change:reload:fd --hidden --follow --exclude .git {q} ''$search_dir 2>/dev/null || true" --header="Type to search, Enter to cd" --preview '([[ -d {} ]] && ls -la {}) || ([[ -f {} ]] && head -20 {})' --height 40% --ansi)
if [[ -n "$target" ]]; then if [[ -n "$target" ]]; then
[[ -d "$target" ]] && cd "$target" || cd "$(dirname "$target")" [[ -d "$target" ]] && cd "$target" || cd "$(dirname "$target")"
fi fi
@ -104,8 +105,9 @@ in
# Function to print path of file/directory selected with fzf # Function to print path of file/directory selected with fzf
function pwdf() { function pwdf() {
local search_dir="''${1:-~}"
local target local target
target=$(echo "" | fzf --bind "change:reload:fd --hidden --follow --exclude .git {q} ~ 2>/dev/null || true" --header="Type to search, Enter to print path" --preview '([[ -d {} ]] && ls -la {}) || ([[ -f {} ]] && head -20 {})' --height 40% --ansi) target=$(echo "" | fzf --bind "change:reload:fd --hidden --follow --exclude .git {q} ''$search_dir 2>/dev/null || true" --header="Type to search, Enter to print path" --preview '([[ -d {} ]] && ls -la {}) || ([[ -f {} ]] && head -20 {})' --height 40% --ansi)
if [[ -n "$target" ]]; then if [[ -n "$target" ]]; then
echo "$target" echo "$target"
fi fi