Відповіді:
:%s/\n\(\(A\.$\)\@!.*\)/\1/
Замініть відповідність шаблону:
група, що містить
A.
за яким безпосередньо йде кінець рядказ:
і робити це в усьому світі.
:help \@!
у Vim для отримання додаткової інформації про цю частину. Інакше це прямо, сподіваюся, з моїм поясненням. Проблема вашого підходу полягає в тому, що якщо " A.
" трапляється в тексті, хоч і не як ізольована лінія маркера, вона буде розбита на ніби спочатку маркер. На практиці це може не бути проблемою (я не знаю, як виглядає ваш "справжній" файл), але загалом це може спричинити небажану поведінку, якщо хтось цього не знає.
:%s///
синтаксисом: це синтаксис "пошук і заміна" у Vim. :
запускає команду, %
визначає весь буфер як діапазон, s
починає заміну. /
- це роздільник шаблону (будь-який інший символ може бути використаний, але /
"стандартний"). Перший /
запускає шаблон пошуку, другий - шаблон заміни, а третій закінчує його. Доступні модифікатори для задання нечутливості до випадків тощо. \1
Являє собою захоплену групу в шаблоні пошуку. :%s/foo/bar/
замінює foo
з bar
в файлі.
:%s/^A\.//
. Метод у відповіді не фіксує ^A\.
самі шаблони (скоріше їх відсутність), тому він не може змінити ці рядки очевидним чином.
Це також працює (коли починається перший рядок A.
)
:v/^A/-1j!