在Vim中删除/更改搜索文本

Che*_*tan 11 vim search replace keyboard-shortcuts

当我对某些模式进行交互式搜索时,每次点击时n,我都会得到下一个结果.如何删除/更改我来的每个结果?

理想情况下,我正在寻找的工作方式如下:我点击n获取搜索结果,然后magic command在可视模式下突出显示该结果,然后我可以执行dc删除或更改突出显示的文本.

示例:

我输入命令

/hello .
Run Code Online (Sandbox Code Playgroud)

它匹配hello,空间和后面的任何字符.

所以说它到达的第一场比赛是"你好w".

现在,我想删除所有内容hello w,搜索下一个匹配(说它是hello a),将下一个匹配更改为hello there,并继续对每个匹配执行不同的操作.

我不是只寻找搜索和替换,因为我希望能够以交互方式对每个结果执行任何操作,例如删除第一个结果,用第二个结果bye替换,并用第三个结果替换later.

Mic*_*son 15

要选择当前比赛的整个比赛(如果您在比赛开始时),您可以输入

v//e
Run Code Online (Sandbox Code Playgroud)

删除到比赛结束

d//e
Run Code Online (Sandbox Code Playgroud)

要改变比赛

c//e
Run Code Online (Sandbox Code Playgroud)

只有消极的是你不能使用n(因为它将重做//e),而是必须使用//

所以典型的工作流程看起来像这样

/hello ./    : Jump to the start of the next "hello ."
d//e         : Delete the item
//           : repeat the search to get to the begining of the next "hello ."
c//e         : change it
//           : next one.
etc.
Run Code Online (Sandbox Code Playgroud)


srs*_*srs 8

我想你想gn:(转到下一场比赛并在视觉模式中选择它).您可以使用命令作为前缀,例如cgn更改匹配,dgn删除等.我发现如果已经匹配,则使用此匹配,以便这样做.