Wstaw wiersz tekstu przed wierszami pasującymi do wyrażenia regularnego w vimie

2

Próbuję dodać kolumnę do tabeli HTML za pomocą vima, więc muszę dodać parę <td>tagów linii przed każdym </tr>. Do tej pory mam

:186,$s/ <\/tr>/<td><\/td> \n <\/tr>/g
ale vim pokazuje ^@zamiast tworzyć nową linię dla zamykającego znacznika tr. Czy jest na to jakiś sposób?

Icchak
źródło

Odpowiedzi:

4

Tak, \rzamiast części \nzastępczej trzeba użyć dziwactwa z :spolecenia Vima . Możesz dodatkowo uprościć polecenie, używając innego separatora, np. #Odwołując się do dopasowania za pomocą &:

:186,$s# </tr>#<td></td> \r&#g
Ingo Karkat
źródło
Dzięki! Jestem trochę zdezorientowany, ponieważ myślałem, że \ n to znak nowej linii Linuksa, a \ r \ n dotyczy Windows. Co to znaczy „nawiązać do meczu z &?
Yitzchak,
1
To wyjaśniono na :h s/\ri :h s/\&, odpowiednio. &Zawiera meczu, czyli </tr>, więc nie trzeba go powtarzać. Można również użyć twierdzenia \zs, ale jest to jeszcze bardziej zaawansowane ...
Ingo Karkat