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

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

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

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

 abcd abcd 

в

 abcd bcd 

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

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 
  • Vim: поддержка мыши потеряна после использования netrw в xterm
  • vim auto complete custom list
  • Как предотвратить `git difftool` от вызова другого` vimdiff`?
  • Как установить отображение bash, чтобы не отображать текст vim после выхода?
  • Вставка с пробелами, добавленными в заголовки строк (по аналогии с комментариями)?
  • Как я могу заменить ^ I на области вкладок в редакторе vim для .java-файла?
  • Запись перед курсором
  • vi создание файлов подкачки перед созданием нового файла
  • Разверните шаблон под курсором на все файлы, соответствующие ему.
  • Загрузка цветовой схемы не влияет на Vim
  • Почему отображение <esc> приводит к сбою клавиш со стрелками в vim?
  • Добавление команд в VIM?
  • Linux и Unix - лучшая ОС в мире.