Поиск и замена Vim – Regex

Я хочу выполнить поиск и заменить. Новая строка перед любой незначащей должна быть заменена вкладкой. Я пытался

%s/\n\D/\t/g 

но он заменил первый символ слова, следующий за новой строкой, чего я не хотел, т.е.

 abcd abcd 

в

 abcd bcd 

Я хочу сохранить после новой строки.

  • Подавлять файлы восстановления при редактировании конфиденциальных файлов в vi, nvi и vim
  • Является ли Vim иммунным для атаки с копией-пастой?
  • Как установить интервал проверки для параметра set autoread в VIM
  • Как повторно запустить автоиндексирование vim в файле tex?
  • vim: использование переменной for-loop-iterator в шаблоне поиска
  • Можно ли создавать и использовать меню в (терминальном) vim?
  • vim - Храните резервную копию перед каждой записью
  • Любой способ предоставить отдельный файл vimrc всего за 1 сеанс
  • 3 Solutions collect form web for “Поиск и замена Vim – Regex”

    Вы почти там, но ваше регулярное выражение заменяет как новую строку, так и не цифру на вкладку.

    Как насчет замены каждой новой строки, за которой следует не цифра, с вкладкой и той же самой цифрой ?

     %s/\n\(\D\)/\t\1/g 

    Ускорение немного беспорядочно, но в основном у вас есть группировка вокруг \D которая будет захватывать любую цифру. Затем он ссылается на \1 чтобы вставить его после вкладки.

    Один из способов сделать это – использовать маркер конечного соответствия:

     %s/\n\ze\D/\t/ 

    Другой способ сделать это – использовать негативный взгляд:

     %s/\n\d\@!/\t/ 

    Они не совсем эквивалентны, вторая также заменит последнюю строку в файле.

    Я надеюсь, что это поможет вам

     :%s#\n.\D#\t#g 
    Linux и Unix - лучшая ОС в мире.