Ответ 1
http://vim.wikia.com/wiki/Search_and_replace
Попробуйте выполнить поиск и замените:
:% s/Foo/бар/дс
Измените каждый "foo" на "bar", но сначала попросите подтверждения.
Нажмите y или n, чтобы изменить или сохранить текст.
Есть фраза, которую я хочу найти в VIM. Когда это будет найдено, я хочу удалить эту фразу. Самый простой способ выполнить цикл для всех экземпляров (n
) и удалить совпадение один за другим (я не хочу их удалять).
ПРИМЕЧАНИЕ. Я знаю, что могу удалить определенное количество символов или несколько слов, но я хочу конкретно удалить "совпадение" моего поиска. Возможно ли это?
http://vim.wikia.com/wiki/Search_and_replace
Попробуйте выполнить поиск и замените:
:% s/Foo/бар/дс
Измените каждый "foo" на "bar", но сначала попросите подтверждения.
Нажмите y или n, чтобы изменить или сохранить текст.
Есть 3 способа, о которых я могу думать:
Самый простой способ объяснить -
:%s/phrase to delete//gc
но вы также можете (лично я использую этот второй чаще) выполнять регулярный поиск фразы для удаления
/phrase to delete
Vim приведет вас к началу следующего появления фразы.
Перейдите в режим вставки (нажмите i) и используйте клавишу Delete, чтобы удалить фразу.
Ударьте, когда вы удалили всю фразу.
Теперь, когда вы сделали это один раз, вы можете нажать n, чтобы перейти к следующему вхождению фразы, а затем нажать точку/период "." для выполнения действия удаления, которое вы только что выполнили
Продолжайте наносить n и точку, пока вы не закончите.
Наконец, вы можете выполнить поиск удаляемой фразы (например, во втором методе), но на этот раз вместо перехода в режим вставки вы
Подсчитайте количество символов, которые вы хотите удалить
Введите это число (с цифровыми клавишами)
Нажмите клавишу x - символы должны быть удалены
Продолжайте с помощью n и точки, как во втором методе.
PS - И если вы уже не знаете, вы можете сделать капитал n, чтобы переместиться назад через совпадения поиска.
Простое решение состоит в использовании команды :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/
.
Лучший способ, вероятно, использовать:
:%s/phrase//gc
c
запрашивает подтверждение перед каждым удалением. g
позволяет выполнять несколько замен в одной строке.
Вы также можете просто выполнить поиск с помощью /phrase
, выбрать следующее совпадение с помощью gn
и удалить его с помощью d
.