Sustituir con el contenido del registro o líneas de rango de otra parte en el archivo en Vim


Estoy usando Vim, y quiero sustituir algún texto marcador de posición con una cadena larga, que abarca varias líneas, que ya está escrito en otro lugar del archivo.

¿Es posible reemplazar un patrón con el contenido de un registro? Algo así como

:%s/foo/<contents of register A>

De lo contrario, ¿es posible reemplazar con un rango de líneas? algo así como

:%s/foo/<content of lines from 10 to 15>
Author: Paolo Tedesco, 2009-03-19

2 answers

Según http://vim.wikia.com/wiki/Search_and_replace Parece:

:%s/foo/\=@a/g

Además, al pulsar <c-r>a se insertará el contenido de register a.

Genial never nunca lo supe. Buena pregunta.

Algunas otras cosas que hacer con <c-r>: http://vimdoc.sourceforge.net/htmldoc/cmdline.html#c_CTRL-R

 81
Author: David Wolever,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-08 06:04:27
:%s/foo/\=getline(10, 15)/g

:%s/foo/\=join(getline(10, 15))/g
 20
Author: Mykola Golubyev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-19 15:53:57