New answers tagged


One way to do this is to use fnameescape: Y:!<C-r>=fnameescape(@")<CR> But it may not be perfect if the command has spaces. You could also try split(@")->map('fnameescape(v:val)')->join(' ') in the expression, or some combination of shellescape()/escape(…, '%#'), etc.


Possible answer derived from - doesn't function in quite the same way, but :.w !fish does send the text to a new shell literally and returns the correct answer. It also makes it easier to write short python or other language programs instead of shell script, which would be an advantage.


As a slight workflow adjustment, I would use :make (or possibly :Make from the dispatch plugin) to build. Then I would run :terminal ./overlay & for the program part. This gives you a window running exactly that command. (There’s also :Dispatch, and maybe :Start/:Spawn, from the dispatch plugin. All are async when possible and come with foreground and ...


What you're describing can be easily achieved with vim-altscreen. Based on the screenshots in your post and the short description of what you want at the top of it, this seem to match what you seek.

Top 50 recent answers are included