diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index a14c7132..bd2e4378 100644 --- a/shell/key-bindings.zsh +++ b/shell/key-bindings.zsh @@ -110,8 +110,14 @@ fzf-cd-widget() { zle redisplay return 0 fi + # Use subshell expansion to get the absolute PWD of the target dir. + # This allows the recorded shell history to be reused even from a different + # working directory. + # If failed, fallback to the unexpanded path to surface the error to the user. + # NOTE: Don't use the `:a` modifier as it resolves symlinks like `pwd -P`. + dir=$(builtin cd >/dev/null -- "${dir}" && echo "${PWD}" || echo "${dir}") zle push-line # Clear buffer. Auto-restored on next prompt. - BUFFER="builtin cd -- ${(q)dir:a}" + BUFFER="builtin cd -- ${(q)dir}" zle accept-line local ret=$? unset dir # ensure this doesn't end up appearing in prompt expansion