Удалить строки с выделенным текстом / удалить выделенный текст - PullRequest
4 голосов
/ 24 мая 2011

Кто-нибудь знает, как удалить:

  1. строки с выделенным текстом
  2. весь выделенный текст самостоятельно

(выделенный текст (т. Е. После поиска) не выделенный текст)


Есть ли команда, которая ищет весь выделенный текст и удаляет строку? (независимо от того, какую команду или функцию поиска я использовал для выделения текста)

команда g/pattern/d не всегда удаляет выделенный текст
возможная ошибка /^\(.*\)\(\n\1\)\+$ -> выделить все двойные линии
но g/^\(.*\)\(\n\1\)\+$/d -> НЕ удаляет все двойные строки

Ответы [ 5 ]

12 голосов
/ 24 мая 2011

Ну, вы можете удалить найденный шаблон следующим образом:

:%s/<pattern>//gc

И вы можете удалить всю строку с найденным шаблоном следующим образом:

:g/<pattern>/d
3 голосов
/ 24 мая 2011

В дополнение к sixfeetsix 'ответ :

  • для удаления всех строк, НЕ содержащих <pattern>, введите :g!/<pattern>/d или :v/<pattern>/g
  • , чтобы избежать ввода <pattern> после :g/, введите :g/ CTRL - r //d, который вставляет содержимое регистра поиска ( CTRL - r / означает регистр /) при вводе вашей команды.
3 голосов
/ 24 мая 2011

как удалить: 2) весь выделенный текст self

Вы можете использовать поиск и замену (замену), чтобы сделать это.

Обычно используется так:

:%s/your_search_here/your_replacement_here/gc

В частности, заменяйте результаты поиска ничем (чтобы удалить их):

:%s/your_search_here//gc

Пропустите c в концезаменить все без подтверждения.

Введите :help :s для получения дополнительной информации.

как удалить: 1) строки с выделенным текстом

Чтобы удалить целые строки, вы можете либо сделать замену и просто сопоставить всю строку с регулярным выражением (%s/^.*your_search_here.*\n//g), либо использовать функцию многократных повторений (multi-repeat).

Обычно используется так:

:g/your_search_here/[cmd]

В частности, комбинируйте его с обычной командой, которую вы используете для удаления строки (d):

:g/your_search_here/d

Тип :help :g для получения дополнительной информации.

Советы :

Простой способ получить свой запрос прямо перед заменой - этовыполните поиск в командном режиме, а не в режиме по умолчанию.

Вместо:

/your_search_here

Тип:

:/your_search_here

Затем вы можете перейти в командный режим (:), нажмите клавишу вверх, чтобы вызвать ваш последний поиск, и отредактируйте строку, чтобы преобразовать ее в замену.

2 голосов
/ 28 октября 2018

С этот ответ SuperUser :

Вы можете использовать gn в версии 7.4 и далее (и gN, чтобы вернуться назад).Он заменяет трюк v//e.

Поиск вперед для последнего использованного шаблона поиска, например, с `n`, и запуск визуального режима для выбора соответствия.

См. :help gn или этот Vimcast для получения дополнительной информации.

0 голосов
/ 17 мая 2012
...