1. Nie jest trudno osiągnąć zachowanie za pomocą dwuetapowej substytucji:
:,$s/BEFORE/AFTER/gc|1,''-&&
Najpierw polecenie substytucji jest uruchamiane dla każdej linii, zaczynając od bieżącej do końca pliku:
,$s/BEFORE/AFTER/gc
Następnie :substitutepolecenie to jest powtarzane z tym samym wzorcem wyszukiwania, ciągiem zastępczym i flagami, używając :& polecenia (patrz :help :&):
1,''-&&
Ta ostatnia jednak dokonuje podstawienia w zakresie wierszy od pierwszego wiersza pliku do wiersza, w którym ustawiono poprzedni znacznik kontekstu, minus jeden. Ponieważ pierwsze :substitutepolecenie przechowuje pozycję kursora przed rozpoczęciem rzeczywistych zamian, wiersz, do którego adresowany ''jest adres, jest wierszem bieżącym przed wykonaniem tego polecenia zastępowania. ( '' Adres odnosi się do
' pseudoznaku; zobacz :help :rangei :help ''po szczegóły.)
Zauważ, że drugie polecenie (po | separatorze polecenia - zobacz
:help :bar) nie wymaga żadnej zmiany, gdy wzorzec lub flagi są zmieniane w pierwszym.
2. Aby zaoszczędzić trochę pisania, aby wyświetlić szkielet powyższego polecenia podstawienia w linii poleceń, można zdefiniować mapowanie w trybie normalnym, na przykład:
:noremap <leader>cs :,$s///gc\|1,''-&&<c-b><right><right><right><right>
Końcowa <c-b><right><right><right><right>część jest niezbędna, aby przesunąć kursor na początek wiersza poleceń ( <c-b>), a następnie cztery znaki w prawo ( <right> × 4), umieszczając go w ten sposób między pierwszymi dwoma ukośnikami, aby użytkownik mógł rozpocząć wpisywanie wzorca wyszukiwania . Gdy żądany wzór i zamiana są gotowe, wynikowe polecenie można uruchomić, naciskając
Enter.
(Można rozważyć umieszczenie //zamiast ///w odwzorowaniu powyżej, jeśli ktoś woli wpisać wzorzec, a następnie samemu wpisać separujący ukośnik, a następnie ciąg zastępujący, zamiast używać strzałki w prawo, aby przesunąć kursor na już istniejący separujący ukośnik rozpoczynający się część zamienna.)
\vpattern- `` bardzo magiczny '' wzorzec: znaki niealfanumeryczne są interpretowane jako specjalne symbole wyrażeń regularnych (bez konieczności zmiany znaczenia)