Удалить весь текст в строке до / после выделенного шаблона поиска - PullRequest
12 голосов
/ 03 июня 2011

Я знаю в VIM, как искать строку и удалять текст до начала / конца строки, но я хотел бы знать, возможно ли также удалить весь текст в строке до или после выделенного шаблона поиска.

Ответы [ 5 ]

14 голосов
/ 03 июня 2011

Если вы хотите сделать это по всем строкам и не хотите вводить поисковый запрос, я бы предложил следующее:

:%s/.*\ze<Ctrl-r>///

Что это значит:

  • %s/: подставить по всем строкам в файле
  • .*: сопоставить любому символу
  • \ze: сопоставить конец, поэтому остальная часть шаблона не подставляется
  • <Ctrl-r>/: вставить текст из регистра '/' (который является регистром поиска)
  • //: заменить ничем

Редактировать: Забыли о послечасть.Мое предложение удалить оба одновременно:

:%s/.*<Ctrl-r>/.*/<Ctrl-r>//
12 голосов
/ 03 июня 2011

Чтобы удалить текст перед FOO в той же строке:

:s/^.*\(FOO\)/\1/

2 голосов
/ 03 июня 2011

От начала строки до начала выделенного поискового шаблона: 0dn

От конца указанного выделенного поискового шаблона до конца строки: $N//e<Enter>lD

Они будут работать вбольшинство случаев.

1 голос
/ 29 августа 2018

Чтобы удалить весь текст в строке строки как до, так и после совпадения поиска, вы также можете сделать:

:g//norm gnd0PlD

Это выполняет команды нормального режима для всех строк, которые соответствуют последнему шаблону поиска.Команды: gn, чтобы выбрать совпадение, d, чтобы удалить его, 0P, чтобы вставить его в начало строки, l, чтобы переместиться влево (после текста, который был только что вставлен) и D удалить до конца строки.Мне дано понять, gn - это довольно недавнее дополнение к vim, так что YMMV.

1 голос
/ 13 сентября 2017

Я не могу комментировать другие ответы, поэтому я отвечаю здесь, но я имею в виду ответ от xofon: просто добавьте «%» в командной строке, что будет полезно для всех строк в файле.

удалить все символы после ']' во всех строках

:%s/\(\]\).*$/\1/

удалить все символы после '-' во всех строках файла

:%s/^\( -- \).*/\1/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...