我可以做:%s/<search_string>/<replace_string>/g替换跨文件的字符串,或:s/<search_string>/<replace_string>/替换当前行。

如何在vim中选择和替换选择行中的单词?

例如:替换第6- 10,14 -18行,而不是第11-13行。


当前回答

在vim中,如果你不清楚哪些行会受到影响,请使用下面的方法

 :%s/foo/bar/gc  

将每个'foo'改为'bar',但要先得到确认。 按“y”表示是,按“n”表示否。之后别忘了保存

:wq

其他回答

替换所有:

:%s/foo/bar/g

找到'foo'(在所有行中)的每个出现,并将其替换为'bar'。

具体线路:

:6,10s/foo/bar/g

将从第6行到第10行的所有行中的每个'foo'更改为'bar'。

作为旁注,不必输入行号,只需突出显示你想要在其中一种可视模式中查找/替换的行:

视觉模式(V) VISUAL BLOCK模式(Ctrl+V) 视觉线模式(Shift+V,在你的情况下工作最好)

选择要替换的行后,键入命令:

:s/<search_string>/<replace_string>/g

你会注意到范围'<,'>会自动为你插入:

:'<,'>s/<search_string>/<replace_string>/g

这里'<仅仅表示第一行突出显示,'>表示最后一行突出显示。

注意,在NORMAL模式下,这种行为可能是意外的:'<和'>指向在其中一个VISUAL模式下最后一次高亮的开始和结束。相反,在NORMAL模式下,是特殊的行号。可以用,简单地说就是当前行。因此,你只能在当前行中查找/替换,就像这样:

:.s/<search_string>/<replace_string>/g

另一件需要注意的事情是,在range和find/replace命令之间插入第二个:没有伤害,换句话说,这些命令仍然有效:

:'<,'>:s/<search_string>/<replace_string>/g
:.:s/<search_string>/<replace_string>/g

搜索和替换

:%s/search\|search2\|search3/replace/gci

G =>全局搜索

先请求确认

i =>不区分大小写

如果您想直接更换,无需确认,请使用以下命令

:%s/search/replace/g

如果你想确认每次替换,那么运行下面的命令

:%s/search/replace/gc

请先确认,这里的搜索不区分大小写。

:%s/search/replace/gci

VI搜索和替换命令示例

假设你想找到一个叫“foo”的单词,并将其替换为“bar”。

第一次按[Esc]键

输入:(冒号)后跟%s/foo/bar/,然后按[Enter]键

: % s / foo -酒吧

在vim中,如果你不清楚哪些行会受到影响,请使用下面的方法

 :%s/foo/bar/gc  

将每个'foo'改为'bar',但要先得到确认。 按“y”表示是,按“n”表示否。之后别忘了保存

:wq