2009-03-19 5 views
62

Sto usando Vim, e voglio sostituire un testo segnaposto con una stringa lunga, che si estende su più righe, che è già scritto da qualche altra parte nel file .Sostituire con il contenuto del registro o linee vanno da altrove nel file in Vim

È possibile sostituire un motivo con il contenuto di un registro? Qualcosa come

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

In caso contrario, è possibile sostituire con una gamma di linee? qualcosa come

:%s/foo/<content of lines from 10 to 15> 

risposta

78

Secondo http://vim.wikia.com/wiki/Search_and_replace Appare:

:%s/foo/\[email protected]/g 

Inoltre, premendo <c-r>a inserirà il contenuto del registro a.

Cool - Non l'ho mai saputo. Buona domanda.

Alcune altre cose da fare con <c-r>: http://vimdoc.sourceforge.net/htmldoc/cmdline.html#c_CTRL-R

+0

Sono impressionato, avete risposto in meno di un minuto ... Grazie! –

+0

Ho sempre voluto inserire le cose nei comandi che provenivano dagli appunti del sistema. – ojblass

+0

il collegamento vimdoc è rotto, utilizzare questo: http://vimdoc.sourceforge.net/htmldoc/undo.html#CTRL-R – 0x89

20
:%s/foo/\=getline(10, 15)/g 

:%s/foo/\=join(getline(10, 15))/g 
+0

Penso che sia l'opposto di quello che sta cercando ... Penso che lui voglia qualcosa come: s/foo/10,15/ –

+0

Forse non mi sono espresso chiaramente, ma quello che volevo ottenere era sostituire 'foo' con ** il contenuto ** delle righe da 10 a 15 e non limita la sostituzione alle righe 10-15. Grazie per aver risposto, comunque :) –

+1

Ho cambiato. Questo si adatta? –

Problemi correlati