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