Поиском я выделил строку, которую хочу изменить. Теперь я хочу заменить только выделенный текст. Я использую, n
чтобы перейти к следующему экземпляру строки поиска. Я думал, что смогу сделать что-то подобное, ciw
но это изменит целое слово, а не только выделенный текст.
Я знаком с, :%s/old/new/g
но я не хочу менять все экземпляры. Вместо этого я хочу подвести курсор к каждому экземпляру, а затем решить, нужно ли его изменить.
gn
, поэтому вот похожий метод, который я только что обнаружил:c//e<CR>FooBar<Esc>//<CR>
:%s/oldtext/newstuff/g
изменит все совпаденияoldtext
наnewstuff
..
нескольких ударов я могу использовать:%norm .
( источник ).Если вы уже искали слово с помощью
/word
или?word
.Вы можете использовать
:%s//newword/gc
для замены слова, которое вы искали ранееnewword
, оставив поисковый термин (s//..
) пустым.c
Флаг говорит , что каждое изменение должно быть подтверждено, нажавy
на да илиn
для нет.Взгляните на
:help :s_flags
дополнительную информацию о флаге подтверждения.источник
l
,a
иq
(или<Esc>
) различные способы , чтобы обернуть цикл подтверждения.Способ № 1
Вы можете использовать
gn
иgN
сопоставления для достижения того, что вы хотите.gn
выполнит поиск последнего использованного поискового запроса и визуально выберет совпадение.gN
делает то же самое, но ищет в обратном направлении. В сочетании с таким оператором, какc
, оператор будет применяться к совпадению. Например, если ваша последняя строка поиска - «foo», и вы вводитеcgn
, она будет искать следующий экземпляр «foo», удаляет его и переведите вас в режим вставки, чтобы ввести текст замены.Подробнее об этом смотрите
:help gn
и:help gN
.Способ № 2
Вы можете использовать
:substitute
команду сc
флагом. Это попросит вас подтвердить каждую замену. Например, допустим, что вы хотите заменить foo на bar во всем файле, но хотите подтвердить каждую замену:Более подробно об этом приведена в следующих разделах справки:
:help :s_flags
,:help cmdline-ranges
, и:help :substitute
.источник