2013-01-08 11 views
12

Jestem pewien, że to jest łatwe, po prostu brakuje mi postaci lub dwóch.Globalnie dołącz do linii z pasującym terminem w vim

Muszę wyszukać konkretny termin w pliku, a kiedy go znajdę, muszę dołączyć coś do tej linii. I chcę to zrobić dla KAŻDEJ linii z meczem.

Aby zrobić to raz, mogę to zrobić:

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

Easy. A jeśli mój „coś znaleźć” były na końcu linii mógłbym to zrobić:

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

Aby zrobić to samo na każdej linii pasującej

Ale jak to zrobić, pierwszą rzeczą, na każdy linia?

Chyba mogę zrobić

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

jednak, że czuje się niezdarny i byłoby bardziej skomplikowane, jeśli rzecz znaleźć się na linii więcej niż jeden raz.

Myślę, że musi istnieć sposób, aby po prostu zrobić moje pierwsze wyszukiwanie wszędzie, ale mam problem z napisaniem wystarczająco zwięzłego opisu, aby google to.

Tak potężni stertowniki, każdy chce się kujonem uderzyć mnie rozwiązaniem dwubajtowym?

Odpowiedz

24

Komenda :g// jest to, czego szukasz - uruchamia komendę w każdej linii pasujących do wzorca:

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

Oh jesteś f-ing żartujesz. Nie próbowałem tego? Pozwól mi zobaczyć. –

+7

Szef, spotkać biurko. –

+0

To działa idealnie. Dzięki. Czy mogę udawać, że jest poniedziałek? –

Powiązane problemy