Ubuntu – Insert output of a system command at the current location in vim

command linevim

In vim, when I use

:r !ls somefilename

it inserts output of that command on a new line below the current line.

If I do

let @a = system("ls")

and later

"ap

it still inserts the output on a new line below the current line.

Is there a way to make vim insert output at the current location?

Best Answer

You can paste the contents of the clipboard buffer between characters with Ctrl-R * in insert mode (and a similar approach for other buffers). So if you can get the system command into a buffer, you should be set. (Source: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).

:let @a=system("ls -l") will put the output of ls -l into register a. You can then paste it (in insert mode) with ^R-a.