Jak zastępować w wielu liniach?

10

Chciałbym wstawić słowo w wielu wierszach, czy jest jakieś takie polecenie

:[2,3,5,7,11]s/^/word\ /g

co wstawiłoby wordna początku linii 2, linii 3, linii 5, linii 7 i linii 11?

W tym przypadku wiele linii nie jest ciągłych.

użytkownik3813057
źródło

Odpowiedzi:

16

Wykonanie podstawienia w kilku kolejnych liniach jest dość łatwe:

:2,11s/^/word /

ale zakres nie może obejmować linii nie następujących po sobie.

Jednak przy odrobinie kreatywności można całkowicie obejść to „ograniczenie”.

Rzeczywiście, możesz powtórzyć ostatnie podstawienie za pomocą :&lub :&&(pierwsze nie zachowa oryginalnych flag, drugie zrobi to), dzięki czemu możesz dość łatwo połączyć łańcuchy:

2s/^/word /|3&|5&|7&|11&

Zobacz :help :&i przewiń :&&.

romainl
źródło