man fzf)Run this command (tried execute-silent also):
fzf --no-clear --bind 'enter:execute(fzf)'
When pressing Enter, I expect the fzf -> fzf transition to be seamless, instead I see a blinking of my terminal.
It seems that --no-clear is great if you exit fzf and re-run it. In this case, building "stacking" fzf's is not possible.
Hi, I found this trick to invoke fzf from within --bind with no flickering:
execute-silent to prevent any screen switching/dev/tty so that your "internal" fzf displays okclear-screen after your command to repaint the "initial" fzf finderEverything then displays on alternate screen with no screen flashing.
Here's one example (press F1):
find . -type f | fzf --bind 'f1:execute-silent(cat {} | fzf 2>/dev/tty)+clear-screen'
Best Regards,
Florian
execute by design runs the command in the alternate screen which is not affected by --no-clear. I would recommend that you implement the "stacking" using shell script outside of fzf, rather than circumventing the limitations of execute bindings.
But the solution @notevenodd posted is quite clever.
Most helpful comment
Hi, I found this trick to invoke
fzffrom within--bindwith no flickering:execute-silentto prevent any screen switching/dev/ttyso that your "internal" fzf displays okclear-screenafter your command to repaint the "initial" fzf finderEverything then displays on alternate screen with no screen flashing.
Here's one example (press F1):
find . -type f | fzf --bind 'f1:execute-silent(cat {} | fzf 2>/dev/tty)+clear-screen'Best Regards,
Florian