fzf adding a ^ character on Windows when an @ symbol exists in selected line/field
Closed this issue · 5 comments
Checklist
- I have read through the manual page (
man fzf
) - I have searched through the existing issues
- For bug reports, I have checked if the bug is reproducible in the latest version of fzf
Output of fzf --version
0.51.0 (260a65b)
OS
- Linux
- macOS
- Windows
- Etc.
Shell
- bash
- zsh
- fish
Problem / Steps to reproduce
Using Windows Terminal:
Command line entered:
>echo one @two three @four five s@ix |fzf --bind "enter:execute(echo {})+abort"
Result displayed:
"one ^@two three ^@four five s^@ix "
So it appears wherever the is a @
symbol, fzf has added a ^
symbol?
I recently revised the argument escaping for cmd.exe to fix some of the long-standing problems on Windows.
Lines 111 to 137 in 7bac1a7
And it escapes @
with ^
. Is this a problem for you?
Maybe escaping @
is not really required. I'll look into it.
I'm using fzf as a front-end for youtube subscriptions - fetching xml and parsing using a Ruby script and displaying the results in fzf. One of the columns is the channel "handle" which start with the @
symbol. I am sending the handle to an executable:
--bind "delete:execute-silent(exec\mark-handle-read.exe {3})"
In this case, the .exe handles any strings passed - no escaping required. I think because fzf already quotes the result on Windows?
On the Windows cmd.exe:
prog.exe ^| tee
is the same as prog.exe "|" tee
The example does not pipe
- it passes the |
as an argument to the program.
Can you check if the problem is fixed on the latest source? In case you can't build the binary, I'm attaching the one I just built.
I tried the binary you built - it works, thank you. I had reverted to the previous version for the short term.
Is there a discussion of the need for the escaping? If fzf returns double-quoted strings in Windows, I am not sure why escaping would be needed.