在Vim中,如何仅在当前行中搜索和替换?

时间:2017-09-12 16:30:06

标签: vim replace

我看到how to search and replace in specific lines,按行号指定,how to search and replace using the current line as reference to a number of lines down

如何仅在当前行中搜索和替换?我正在寻找一种简单的解决方案,不需要像链接解决方案那样指定行号。

4 个答案:

答案 0 :(得分:18)

在特定行中将所有str1替换为str2

:s/str1/str2/g
如果您只想替换第一个匹配项,请

删除g选项。

答案 1 :(得分:9)

您可以将.用于当前行,例如:

:.s/old/new/

这将仅在当前行中将old更改为new

答案 2 :(得分:4)

如果要搜索并替换当前行中所有匹配的单词,可以在命令模式下轻松使用简单的substitute (s)g修饰符。

:s/search/replace/g

如果您只想搜索并替换当前行中的第一个匹配单词,只需从命令中移开g修饰符即可。

:s/search/replace/

参考::help substitute

答案 3 :(得分:1)

确认('c')并替换:

:s/foo/bar/gc

找到'foo'的出现,然后将其替换为'bar'进行确认。
Vim提供了以下选项:

replace with bar (y/n/a/q/l/^E/^Y)?

y / n-自我解释
a-替换所有出现的内容
q-退出
l-更换电流并停止(最后一个)
^ E / ^ Y-ctrl + e和ctrl + y-分别向下和向上滚动。

现在,您可以使用y,n和l的组合来达到目的。