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