2009-06-23 6 views
5

Existe el comando ": a", pero eso es multi-línea, y argdo le pide el texto nuevamente para cada archivo.in vim, cómo anexar/insertar texto con argdo?

Los documentos mencionan el comando global (g/pat/command) que utilizará una versión alternativa de ": a" que finaliza con una nueva línea en lugar de "." en una línea (puede incluir nuevas líneas escapándolas con "\"). Pero no pude hacer que esto funcione.

La única forma que he visto es dar un tirón en primer lugar el texto-a-ser-añadido en un registro de llamada, a continuación, utilizar:

:argdo put x     " where x is the register 

que estoy esperando algo así como

:argdo append myTextHere 

Respuesta

4

No estoy seguro de dónde está tratando de insertar el texto en el búfer. Si usted quiere que después de la línea actual:

:argdo exe 'normal osometext' 

Inserción de texto con saltos de línea en él:

:argdo exe "normal osometext\<CR>anewline" 
+0

hey eso es genial. He visto "normal" antes pero no lo he usado. Por cierto, encontré que esto también funcionó:: argdo normal osometext – 13ren

+0

Debería haber respondido a su pedido de claridad: a veces me gustaría insertarlo en la misma línea en cada uno de los archivos (por ejemplo, la línea 2); a veces después de un cierto patrón. Probablemente no querría hacerlo en términos de la línea actual, porque podría ser diferente en los diferentes archivos. Pero creo que su enfoque es lo suficientemente potente como para adaptarse a esto, yendo a una línea o buscando un patrón, antes de insertarlo. – 13ren

+0

Esto es hermoso, ¡ME ENCANTA ESTO! Por ejemplo: argdo exe 'normal zR' para desplegar todas las pestañas. – user3751385

1

Al pulsar un texto en vim lo colocará en el búfer predeterminado, que es ". Puede pegar ese búfer en el modo de inserción, por ejemplo, escribiendo <C-R>". Entonces, todo lo que necesita es argdo put "

+0

Gracias, estaba esperando algo th en no involucró el establecimiento de registros. Algo como:: argdo append myTextHere Aclararé la pregunta. – 13ren

2

Para añadir texto después de la línea nr 10:

:argdo call append(10, "hello world") 

para añadir texto a la línea 10:

:argdo call setline(10, getline(10)."textappended") 
+0

gracias, eso parece viable. Parece que uno necesita cambiar a un nivel diferente para hacer esto (usando su "llamada" o la "normal" de Brian) – 13ren

Cuestiones relacionadas