diff --git a/shell/key-bindings.fish b/shell/key-bindings.fish index 9d173d48..8e316518 100644 --- a/shell/key-bindings.fish +++ b/shell/key-bindings.fish @@ -154,8 +154,8 @@ function fzf_key_bindings # eval is used to do shell expansion on paths eval set commandline $commandline - # Combine multiple consecutive slashes into one - set commandline (string replace -r -a -- '/+' '/' $commandline) + # Combine multiple consecutive slashes into one, and unescape. + set commandline (string replace -r -a -- '/+' '/' $commandline | string unescape -n) if test -z "$commandline" # Default to current directory with no --query @@ -171,10 +171,8 @@ function fzf_key_bindings # if $dir is "." but commandline is not a relative path, this means no file path found set fzf_query $commandline else - # Special characters must be double escaped. - set -l re_dir (string escape -n -- $dir) # Also remove trailing slash after dir, to "split" input properly - set fzf_query (string replace -r -- "^$re_dir/?" '' $commandline) + set fzf_query (string replace -r -- "^$dir/?" '' $commandline) end end @@ -184,7 +182,7 @@ function fzf_key_bindings end function __fzf_get_dir -d 'Find the longest existing filepath from input string' - set dir (string unescape -n -- $argv) + set dir $argv # Strip trailing slash, unless $dir is root dir (/) set dir (string replace -r -- '(?