2013-01-20 16 views
5

Sto cercando di rimuovere parole da una riga se contengono una stringa specifica. Ecco un esempio del testo:Rimuovi parole complete contenenti una stringa in Vim

host-a, host-b, host-c+test, host-d, host-e+test 

voglio rimuovere tutto ciò che contiene +test, al risultato con:

host-a, host-b, host-d 

Allo stesso modo, ho bisogno di applicare questo su una linea con il metodo integrale, non su tutte le righe nel file. Sarà utilizzato all'interno di una macro.

Come posso fare questo?

+0

Vuoi anche rimuovere la virgola? – fge

+0

Sì. Proprio come mostrato nel mio esempio. – Jericon

risposta

4

Qualcosa di simile, forse?

:%s/\<[-a-z]\++test\>//gc 

Richiederà ogni partita se si desidera sostituirla. Suggerimento: set hlsearch ti mostrerà le partite.

Se anche si desidera rimuovere la virgola, quindi:

%s/\(,\s\+\)\?\S\++test\>//gc 
+0

'-' counds come un limite di parole, quindi è necessario disattivarlo o utilizzare un'altra soluzione –

+0

Ah, sì, è vero. Fisso. – fge

+0

Il primo funziona, ma il secondo no. Devo rimuovere le virgole se presenti (cioè se l'elemento non è il primo della linea). – Jericon

Problemi correlati