2009-06-23 18 views
5

C'è il comando ": a", ma quello è multi-linea, e argdo ti chiede nuovamente il testo per ogni file.in vim, come aggiungere/inserire testo con argdo?

I documenti menzionano il comando globale (g/pat/comando) che utilizzerà una versione alternativa di ": a" che viene terminata da una nuova riga anziché da "." su una linea (puoi includere i newline facendoli sfuggire con "\"). Ma non ho potuto farlo funzionare.

L'unico modo che ho visto è quello di tirare prima il text-to-be-aggiunto in un registro di nome, quindi utilizzare:

:argdo put x     " where x is the register 

spero in qualcosa di simile a

:argdo append myTextHere 

risposta

4

Non sono chiaro dove stai cercando di inserire il testo nel buffer. Se si desidera che dopo la riga corrente:

:argdo exe 'normal osometext' 

Inserimento di testo con interruzione di linea in esso:

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

hey che è abbastanza bello. Ho visto "normale" prima ma non l'ho usato. A proposito ho trovato che funzionava anche:: argdo normal osometext – 13ren

+0

Avrei dovuto rispondere alla tua richiesta di chiarezza: a volte vorrei inserirla sulla stessa riga in ciascuno dei file (ad esempio la riga 2); a volte dopo un certo schema. Probabilmente non vorrei farlo in termini di linea corrente, perché potrebbe essere diverso nei diversi file. Ma penso che il tuo approccio sia abbastanza potente da adattarsi a questo, andando su una linea o cercando uno schema, prima di inserirlo. – 13ren

+0

Questo è bello, lo ADORO! Ad esempio: argdo exe 'normal zR' per aprire tutte le schede. – user3751385

1

Yanking di un testo in vim lo metterà nel buffer predefinito, che è ". È possibile incollare il buffer in modalità di inserimento, ad esempio digitando <C-R>". Quindi tutto ciò di cui hai bisogno è argdo put "

+0

Grazie, speravo in qualcosa non ha comportato la creazione di registri. Qualcosa come:: argdo accludi il mio testo. Chiarirò la domanda. – 13ren

2

Per aggiungere del testo dopo la linea nr 10:

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

Per aggiungere testo al linea 10:

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

grazie, sembra fattibile. Sembra che sia necessario passare a un livello diverso per farlo (utilizzando la "chiamata" o il "normale" di Brian) – 13ren

Problemi correlati