我发现 vim 中的替代品有一个范围参数:
:[range]s/pattern/sring/[c]/[g]/[e]/[i]/[I]/[p]
但我想知道让替换只发生在视觉选择中是否方便。
有谁知道该怎么做?
我发现 vim 中的替代品有一个范围参数:
:[range]s/pattern/sring/[c]/[g]/[e]/[i]/[I]/[p]
但我想知道让替换只发生在视觉选择中是否方便。
有谁知道该怎么做?
是的,你可以这样做。
视觉选择后,按:
会给你 :'<,'>
,'<,'>
是[range]
零件。
然后像下面那样做替换,但请注意这会影响整行:
:'<,'>s/foo/bar/g
如果您想更改foo
为bar
仅在视觉选择区域(即按字符或按块选择),则必须使用\%V
atom:
:'<,'>s/\%Vfoo/bar/g
文章Search and replace in a visual selection ( archive ) 包含有关该主题的更多有用信息。
为了将范围限制在视线范围内,'<,'>
范围就可以了。但是,对于按字符或按块选择,这还不够。您需要修改正则表达式或使用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 ),但上面的文章也已更新。