Insertar la salida de un comando del sistema en la ubicación actual en vim


33

En vim, cuando uso

:r !ls somefilename

inserta la salida de ese comando en una nueva línea debajo de la línea actual.

Si lo hago

let @a = system("ls")

y después

"ap

todavía inserta la salida en una nueva línea debajo de la línea actual.

¿Hay alguna manera de hacer que vim insert output en la ubicación actual?


Respuestas:


14

Puede pegar el contenido del búfer del portapapeles entre caracteres con Ctrl-R * en modo de inserción (y un enfoque similar para otros búferes). Entonces, si puede obtener el comando del sistema en un búfer, debería estar configurado. (Fuente: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).

:let @a=system("ls -l")pondrá la salida de ls -len registro a. Luego puede pegarlo (en modo de inserción) con ^R-a.


Además, en la mayoría de las plataformas, el portapapeles se sincroniza con un registro (por lo general *), por lo que si canaliza la salida de comandos al portapapeles, estará listo "*para su uso.
Bruno Bronosky

39
:r !command 

leerá el resultado del comando y lo insertará en la línea debajo de la línea actual. Así es como se programa vi, no puede cambiar el comportamiento.

Pero diga si está en la línea número 3. Si lo intenta :r !date. Insertará el valor de la fecha en la línea número 4.

Si desea que aparezca el valor de la fecha en la línea número 3, intente :2r !dateinsertar el valor de la fecha en la línea número 3.


44
Eso se inserta en una línea diferente, pero aún en una línea propia. ¡Quiero insertarlo en la ubicación actual!
deshmukh

13

Aquí hay una forma alternativa de pegar la salida del comando externo antes del cursor:

:exe 'norm i' . system("ls -l")

o use la expresión register ( :help @=):

"=system('ls -la')

luego golpear P. O camino más corto por:

<CTRL-R>=system('ls -la')<CR>

44
Esta es la respuesta.
Jacob

1
¡Convenido! Esta realmente debería ser la respuesta correcta, ya que incluye una solución más programática (con :exe) que se puede incluir en los comandos.
metasoarous
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.