1. Не важко досягти поведінки за допомогою двоступеневої підстановки:
:,$s/BEFORE/AFTER/gc|1,''-&&
По-перше, команда підстановки виконується для кожного рядка, починаючи з поточного до кінця файлу:
,$s/BEFORE/AFTER/gc
Потім ця :substituteкоманда повторюється з тією ж схемою пошуку, рядком заміни та прапорами, використовуючи :& команду (див. :help :&):
1,''-&&
Останній, однак, виконує підстановку на діапазоні рядків від першого рядка файла до рядка, де встановлено попередній контекстний знак, мінус один. Оскільки перша :substituteкоманда зберігає позицію курсора перед початком фактичної заміни, адреса, на яку звертається, ''- це рядок, який був поточним перед виконанням команди заміщення. (The '' адреса відноситься до
' псевдо-мітці; см :help :rangeі :help ''для деталей.)
Зауважте, що друга команда (після | роздільника команд — див.
:help :bar) Не потребує жодних змін при зміні шаблону чи прапорів у першій.
2. Щоб зберегти деякий набір тексту, щоб підняти скелет вищевказаної команди підстановки в командному рядку, можна визначити відображення у звичайному режимі, наприклад:
:noremap <leader>cs :,$s///gc\|1,''-&&<c-b><right><right><right><right>
Кінцева <c-b><right><right><right><right>частина необхідна для переміщення курсору до початку командного рядка ( <c-b>), а потім чотирьох символів праворуч ( <right> × 4), таким чином, розміщуючи його між першими двома знаками нахилу, готовим для того, щоб користувач почав вводити шаблон пошуку. . Після того, як бажаний шаблон і заміна будуть готові, отриману команду можна виконати натисканням
Enter.
(Можна подумати про те, що //замість ///відображення вище, якщо ви вважаєте за краще вводити шаблон, а потім введіть розділову косу рису, а потім рядок заміни, а не стрілку праворуч для переміщення курсору над уже наявною роздільною косою косою запасна частина.)
\vpattern- "дуже магічний" шаблон: не алфавітно-цифрові символи інтерпретуються як спеціальні символи регулярного вираження (не потрібно бігти)