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?
command-line
vim
deshmukh
fuente
fuente
Respuestas:
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 dels -l
en registroa
. Luego puede pegarlo (en modo de inserción) con^R-a
.fuente
*
), por lo que si canaliza la salida de comandos al portapapeles, estará listo"*
para su uso.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 !date
insertar el valor de la fecha en la línea número 3.fuente
Aquí hay una forma alternativa de pegar la salida del comando externo antes del cursor:
o use la expresión register (
:help @=
):luego golpear P. O camino más corto por:
fuente
:exe
) que se puede incluir en los comandos.