Подтвердить что ты не робот

Удалить соответствующий шаблон поиска в VIM

Есть фраза, которую я хочу найти в VIM. Когда это будет найдено, я хочу удалить эту фразу. Самый простой способ выполнить цикл для всех экземпляров (n) и удалить совпадение один за другим (я не хочу их удалять).

ПРИМЕЧАНИЕ. Я знаю, что могу удалить определенное количество символов или несколько слов, но я хочу конкретно удалить "совпадение" моего поиска. Возможно ли это?

4b9b3361

Ответ 1

http://vim.wikia.com/wiki/Search_and_replace

Попробуйте выполнить поиск и замените:

:% s/Foo/бар/дс

Измените каждый "foo" на "bar", но сначала попросите подтверждения.

Нажмите y или n, чтобы изменить или сохранить текст.

Ответ 2

Есть 3 способа, о которых я могу думать:

Самый простой способ объяснить -

:%s/phrase to delete//gc

но вы также можете (лично я использую этот второй чаще) выполнять регулярный поиск фразы для удаления

/phrase to delete

Vim приведет вас к началу следующего появления фразы.

Перейдите в режим вставки (нажмите i) и используйте клавишу Delete, чтобы удалить фразу.

Ударьте, когда вы удалили всю фразу.

Теперь, когда вы сделали это один раз, вы можете нажать n, чтобы перейти к следующему вхождению фразы, а затем нажать точку/период "." для выполнения действия удаления, которое вы только что выполнили

Продолжайте наносить n и точку, пока вы не закончите.

Наконец, вы можете выполнить поиск удаляемой фразы (например, во втором методе), но на этот раз вместо перехода в режим вставки вы

Подсчитайте количество символов, которые вы хотите удалить

Введите это число (с цифровыми клавишами)

Нажмите клавишу x - символы должны быть удалены

Продолжайте с помощью n и точки, как во втором методе.

PS - И если вы уже не знаете, вы можете сделать капитал n, чтобы переместиться назад через совпадения поиска.

Ответ 3

Простое решение состоит в использовании команды :substitute с подтверждение:

:%s///gc

Эта команда заменяет вхождения последнего шаблона поиска (который используется, если шаблон опущен) с пустой строкой.

Кроме того, можно определять сопоставления выбора текстовых объектов для работы в частности, по совпадению последнего шаблона поиска под курсором. следующие два отображения могут использоваться в режиме Visual или Operator-pending для выберите текст с начала предыдущего совпадения последнего поиска шаблон до его конца.

vnoremap <silent> i/ :<c-u>call SelectMatch()<cr>
onoremap <silent> i/ :call SelectMatch()<cr>
function! SelectMatch()
    if search(@/, 'bcW')
        norm! v
        call search(@/, 'ceW')
    else
        norm! gv
    endif
endfunction

Используя эти сопоставления, можно удалить совпадение под курсором с помощью di/, применить любой другой оператор или визуально выбрать его на vi/.

Ответ 4

Лучший способ, вероятно, использовать:

:%s/phrase//gc

c запрашивает подтверждение перед каждым удалением. g позволяет выполнять несколько замен в одной строке.

Вы также можете просто выполнить поиск с помощью /phrase, выбрать следующее совпадение с помощью gn и удалить его с помощью d.