如何在vi
中的选择范围内查找和替换?
以可视模式选择文本(假设您正在执行此操作,然后按:
开始输入命令,您将在命令行中看到类似以下内容:
:'<,'>
这意味着该命令将应用于选择。然后键入s/search/replace/
并按Enter。 (如果要替换所有匹配项,请在第三个斜杠后添加g
,如果要每次替换都确认,请添加c
)
这里建议的大多数其他解决方案都可以在进行选择的整个线上工作,这可能不是您想要的。
要仅在选择中搜索和替换,请首先在视觉上选择文本,然后使用如下命令:
:%s/\%VSEARCH/REPLACE/g
这将进行搜索,并且仅在视觉选择的部分中进行替换,将SEARCH替换为REPLACE。如果您选择了多行,那么这也将适用于多行。
如果使用可视模式进行选择,则:
:'<,'>s/regex/replacement/options
如果在可视模式下进入命令行模式(通过按'<,'>
,则VIM将自动放置范围(':'
)。
我尝试过此操作,它也替换了其他2列中的数字。我做了Cntrl + V G并移动了光标,直到只有我想要的列变灰,因为它不再是唯一的变灰区域。然后我做了: s / 1/3 / g
为什么这会替换我的选择(灰色列)区域之外的值?
如果要对文件中的所有实例进行global搜索并替换(使用可选的正则表达式),我将执行以下操作:
:%s/foo/bar/g
忽略g进行本地替换。