2013-01-08 15 views
12

Sono sicuro che questo è facile, mi manca solo un personaggio o due.Globalmente si aggiunge alla riga con termine corrispondente in vim

Ho bisogno di cercare un termine particolare in un file, e quando lo trovo, ho bisogno di aggiungere qualcosa a quella linea. E voglio farlo per OGNI linea con la partita.

di farlo una volta, posso fare questo:

/Thing to find/s/$/ Stuff to append/ 

facile. E se la mia "cosa di trovare" erano alla fine della linea che potrei fare questo:

%s/\(Thing to find\)$/\1 Stuff to append/ 

di fare la stessa cosa su ogni linea di corrispondenza

Ma come faccio a fare la prima cosa su ogni linea?

Credo che avrei potuto fare

%s/\(Thing to find.*\)$/\1 Stuff to append/ 

Ma che si sente goffa e renderebbe più complicato se la cosa fosse di trovare su una linea più di una volta.

Penso che ci sia un modo per fare la mia prima ricerca dappertutto, ma ho difficoltà a scrivere una descrizione abbastanza concisa per google.

Così potenti impilatori, chiunque vuole nerd schiaffeggiami con una soluzione a due byte?

risposta

24

Il comando :g// è quello che stai cercando - si esegue un comando su ogni riga che corrisponda alla sequenza:

:g/Thing to find/ s/$/ Stuff to append/ 
+1

Oh si sono f-ing scherzando. Non l'ho provato? Lasciami andare a vedere. –

+7

Testa, incontro scrivania. –

+0

Che funziona perfettamente. Grazie. Posso far finta che sia lunedì? –

Problemi correlati