vim 在`vi`中的选定内容内查找和替换

jq6vz3qz  于 2023-10-20  发布在  其他
关注(0)|答案(6)|浏览(112)

如何在vi中进行查找和替换?

8dtrkrch

8dtrkrch1#

如果你的选择是跨一行或多行的,这可以通过在视觉模式下选择文本来完成(我假设这就是你正在做的),然后按:开始键入命令,你会看到类似这样的东西出现在命令行中:

:'<,'>

这意味着该命令将应用于所选内容。然后键入s/search/replace/并按回车键。(如果要替换所有匹配项,请在第三个斜杠后添加g;如果要对每个替换项进行确认,请在第三个斜杠后添加c

o2g1uqev

o2g1uqev2#

这里建议的大多数其他解决方案都适用于选择发生的整行,这可能不是您想要的。
要在选定内容中搜索和替换ONLY,请首先在视觉上选择文本,然后使用如下命令:

:%s/\%VSEARCH/REPLACE/g

这将只在可视选择的部分中进行搜索和替换,用REPLACE替换REVIEW。如果您选择了多行,这也将适用于多行。

odopli94

odopli943#

如果您使用视觉模式进行选择,则:

:'<,'>s/regex/replacement/options

如果从可视模式进入命令行模式(通过按':'),Vim将自动放置范围('<,'>)。

btqmn9zl

btqmn9zl5#

Ex命令的范围是逐行指定的(请参见*cmdline-ranges*),并且当在存在可视选择的情况下按下:时,行范围将在命令行上自动指定为'<,'>(见*v_:*),这使得:s[ubstitute]命令在整个行上操作,除非在搜索模式中用\%V指定了可视选择边界(见*/\%V*),例如:/\%Vvi\%Vm仅在视觉选择内匹配“Vim”,其中选择的结束正好在搜索模式的结束之前指定,因为每个\%V指定下一个字符作为视觉选择的开始或结束,因此/\%Vvim\%V将要求视觉选择在“m”之后继续以匹配“vim”。请注意,在搜索模式中使用第二个\%V是不必要的,除非匹配需要正好在视觉选择的边界处或仅部分在视觉选择中。

ar7v8xwq

ar7v8xwq6#

如果你想对文件中的所有示例进行 global 搜索和替换(使用可选的正则表达式),我会这样做:

:%s/foo/bar/g

省略g以进行局部替换。

相关问题