Я хочу выполнить поиск и замену. Новая строка перед любым нецифровым символом должна быть заменена на табуляцию. Я пробовал
%s/\n\D/\t/g
но он заменил первый символ слова после новой строки, а это не то, что я хотел, т.е.
abcd
abcd
к
abcd bcd
Я хочу сохранить a
после новой строки.
решение1
Вы почти у цели, но ваше регулярное выражение заменяет и символ новой строкиинецифровое с табуляцией.
Как насчет замены каждого символа новой строки, за которым следует нецифровой символ, на символ табуляции?и та же самая нецифра?
%s/\n\(\D\)/\t\1/g
Экранирование немного запутанное, но в основном у вас есть группировка вокруг , \D
которая захватит все, что не является цифрой. Затем это ссылается на , \1
чтобы вставить его после табуляции.
решение2
Один из способов сделать это — использовать маркер конца совпадения:
%s/\n\ze\D/\t/
Другой способ сделать это — использовать отрицательный просмотр вперед:
%s/\n\d\@!/\t/
Они не совсем эквивалентны, второй также заменит последний символ новой строки в файле.
решение3
Я надеюсь, что это поможет вам
:%s#\n.\D#\t#g