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

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

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

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

 abcd abcd 

в

 abcd bcd 

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

  • Вставьте новые строки с помощью vim
  • Есть ли плагин меню файла для vim (а не gVim), который создает текстовую систему меню графического интерфейса?
  • Есть ли Vim, как «Окно командной строки» для Bash?
  • Откройте несколько файлов в Vim с файловым списком
  • есть ли ярлык vim или я могу создать его для 'tabe other_file'
  • сопоставление шаблонов в vim
  • Поиск «не новой строки» в vim?
  • Невозможно получить vim для распознавания unicode
  • 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 - лучшая ОС в мире.