在VIM中删除匹配的搜索模式


Delete matching search pattern in VIM

我想在Vim中寻找一个短语。找到后,我想删除这个短语。最简单的方法是循环到所有实例(n),并逐个删除匹配项(我不想删除所有实例)。

注意:我知道我可以删除一定数量的字符或单词,但我想特别删除搜索的"匹配"。这有可能吗?


http:/ / / / vim.wikia.com _ _维基搜索和替换

试试这个:搜索和替换

:%s /食品/酒吧/ GC

改变每个"foo""酒吧",但第一个确认买卖。

出版社Y/N来改变或保持您的文本。


有3种:我能想到的

这是最简单的方式来解释。

1
:%s/phrase to delete//gc

但你也可以(我用这一个个人(二)do a正则搜索短语to delete for the

1
/phrase to delete

Vim会带你开始下一个阶段发生。

进入插入模式(HIT)使用删除和清除的关键短语。

当你击中Escape消去所有的短语。

现在你必须做这一次,你可以去下一个热门的短语的第一点/周期,然后点击"删除"。关键的是,你只是执行动作

继续,直到你击中点N和做的。

你可以做一个搜索lastly短语to delete(样的在第二的方法),但这一时间,而不是要你插入模式

计数的数目,你想删除人物

型数(与数个键)

点击关键人物应该得到消去x

继续通过与N型和第二点的方法。

PS如果你不知道你可以做一个资本n移动向后通过搜索匹配。


a简单的解决方案是使用一个:substitute命令确认:

1
:%s///gc

本命令取代occurrences负荷模式的搜索(这是用if这是一个空字符串omitted)模式。

此外,一个可以定义映射的文本对象的选择操作最后,通过对匹配的搜索模式下的光标。酒店通过使用映射的双CAN在Visual模式或运算符的待定。选择文本开始从以前的搜索匹配负载模式对ITS的结局。

1
2
3
4
5
6
7
8
9
10
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

本文利用CAN删除映射在一个di/匹配光标,适用于任何其他运营商在选择IT vi/或视力。


最好的方法是使用:

1
:%s/phrase//gc

cfor each删除前要求确认。允许多个greplacements发生在同一行。

所以,你可以使用/phrase即时搜索,选择一个gn比赛,d和删除它。