2

我发现 vim 中的替代品有一个范围参数:

:[range]s/pattern/sring/[c]/[g]/[e]/[i]/[I]/[p]

但我想知道让替换只发生在视觉选择中是否方便。

有谁知道该怎么做?

4

2 回答 2

4

是的,你可以这样做。

视觉选择后,按:会给你 :'<,'>'<,'>[range]零件。

然后像下面那样做替换,但请注意这会影响整行

:'<,'>s/foo/bar/g

如果您想更改foobar 在视觉选择区域(即按字符或按块选择),则必须使用\%Vatom

:'<,'>s/\%Vfoo/bar/g

文章Search and replace in a visual selection ( archive ) 包含有关该主题的更多有用信息。

于 2012-08-24T08:13:08.773 回答
1

为了将范围限制在视线范围内,'<,'>范围就可以了。但是,对于按字符或按块选择,这还不够。您需要修改正则表达式或使用vis.vim插件;否则,选择之外的字符(但在行内)也会受到影响。

在 Vim Tips Wiki 上找到完整的讨论:http: //vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block


注意:这个答案来自 2012 年,现在可以使用\%V原子(2021 年 4 月 2 日)将更改限制在视觉选择内部(按字符或按块)。请参阅文章Search and replace in a visual selection ( archive ),但上面的文章也已更新。

于 2012-08-24T08:19:23.227 回答