#vim
#vim
Вопрос:
У меня есть текстовый документ, в котором есть пустые строки и строки, начинающиеся с заглавных букв месяцев.
Я хочу добавить «- » в начало каждой непустой строки.
Пробовал это:
1,$s/^[A-Z]/- /
и это удаляет первую букву месяца (например, «- une», когда это должно быть «- June»)
Как я могу добавить эту букву обратно? Или есть «лучший» способ сделать это для большого документа, где мне нужно сохранить пустые строки нетронутыми.
Ответ №1:
попробуйте это, это должно дать то, что вы хотите
%s/^[A-Z]/- amp;/
или используйте :g
:
:g/^[A-Z]/s/^/- /
Комментарии:
1. Или, если это легче запомнить,
это почти то же самое, что
amp;
в заменяющей части.2. vimgolf: если строки действительно пустые, мы можем просто использовать
.
so:%s/^./- amp;
Ответ №2:
У вас есть ответ, который либо добавит соответствующий текст обратно, либо вообще не будет совпадать с текстом во время замены. Другой метод заключается в том, чтобы указать соответствие как нулевую ширину или установить окончание соответствия, чтобы текст соответствовал, но не заменялся:
%s/^[A-Z]@=/- /
или
%s/^ze[A-Z]/- /
Смотрите :help zero-width
, :help /@=
:help /ze
.
Комментарии:
1. оба ответа работают, я ценю указания на помощь и объяснение в этом.