Quantcast
Channel: Active questions tagged user-commands - Vi and Vim Stack Exchange
Viewing all articles
Browse latest Browse all 60

How to pass everything from a command into a function with escaped characters

$
0
0

These are my scenarios and expected output

function! s:Foo(text)    echoerr "'" . a:text . "'"endfunctioncommand ... FooCommand ... (not sure what to write here)FooCommand text

'text'

FooCommand text asdfsfd

'text asdfsfd'

(it's hard to see in stackoverflow but the next one has trailing whitespace)

FooCommand line with 4 trailing spaces    

'line with 4 trailing spaces '

FooCommand line with"quotes" here

'line with"quotes" here'

Nothing that I've tried works. I've tried <f-args>, <q-args>, <args> and I've tried manually adding ""s around the non q- versions. They all fail for some reason or another.

Either the function will say it didn't get enough args, Undefined variable, or including "s will cut off text at the first double-quote that's found.

The best combination I got was my first try - Use <q-args> and then manually escape "s all the time. But even then, <q-args> doesn't seem to allow trailing whitespace. So I can't use it for what I'm trying to do.

Is there any way for Vim to just let me pass everything as one big string to a function and it just escape everything properly? Including quotes. Including spaces. I just want Vim to take whatever I write and put it in a string.


Viewing all articles
Browse latest Browse all 60

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>