Vim - 逐个找到模式的出现

时间:2018-01-06 01:39:59

标签: vim

我希望能够找到一个模式的出现,突出显示它,转到模式的下一个出现,突出显示它,转到下一个,依此类推,然后在结束时删除所有出现并进入插入模式。例如,逐个查找<div>的所有出现,最后删除所有出现并输入插入模式以将其替换为<p>。我想逐个看到出现的原因是我首先要查看代码中出现的位置,以便决定是否要删除它。例如,我有一些HTML,并希望看到标签在某个代码块中的位置,以便决定是否要删除它们。我知道我可以dw剪切一个单词或cw删除单词并进入插入模式。我知道我可以使用像:%s/my_patter/replace_pattern/gc这样的正则表达式,但这会删除整个文件中的所有出现,这是我不想要的。我想首先迭代模式的每个出现,如果我想在我决定是否要用其他东西替换之前省略它,请跳过它。这与您在Sublime中可以做的类似,通过选择一个单词并按ctrl + D然后用一个键击执行所有出现的更改。

修改

例如,我有这段代码,在这里我想立即用div替换所有p但第二个<div class="form-group"> <%= f.label :daily_hours, class: "col-sm-2 control-label" %> <%= f.text_field :daily_hours, class: "form-control" %> </div> <div class="form-group"> <%= f.label :date, class: "col-sm-2 control-label" %> <%= f.date_field :date, class: "form-control" %> </div> <div class="form-group"> <%= f.label :work_performed, class: "col-sm-2 control-label" %> <%= f.text_area :work_performed, class: "form-control" %> </div>

Arrays.sort

2 个答案:

答案 0 :(得分:2)

我认为你要找的命令是:

:%s/div/p/gc

如果修饰符g允许您在每行div找到多个c实例,则可以通过键入y或n确认是否进行更改。

答案 1 :(得分:1)

Vim只有内置:substitute标志的gc命令,正如@ThomasSmyth所回答的那样。但是,像multiple-cursors这样的插件旨在重现多个匹配的选择以及随后的同时编辑。虽然它不是vi风格,但试试看它是否适合您喜欢的编辑风格!

相关问题