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

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

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


当前回答

搜索和替换

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

G =>全局搜索

先请求确认

i =>不区分大小写

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

:%s/search/replace/g

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

:%s/search/replace/gc

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

:%s/search/replace/gci

其他回答

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

 :%s/foo/bar/gc  

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

:wq

VI搜索和替换命令示例

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

第一次按[Esc]键

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

: % s / foo -酒吧

您可以使用两个查找/替换序列来完成此操作

  :6,10s/<search_string>/<replace_string>/g
  :14,18s/<search_string>/<replace_string>/g

第二次你需要调整的是范围,所以我不会把它全部敲出来,我会回忆起最后一个命令,只编辑范围

我们不需要输入当前的行号。

如果你想把当前行(.)和接下来的两行(+2)的每个foo更改为bar,简单地做:

:.,+2s/foo/bar/g

如果你想在修改之前确认,用gc替换g:

:.,+2s/foo/bar/gc
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal

假设你想用其他信息替换上面的内容。

命令(:% s / \ / sys \ / sim源\ \ / /通用\ \ / jl \ /公斤/ ls \ / owow \ / lsal / sys.pkg.mpu.umc.kdk. / g)

在这里,上面的内容将被替换为(sys.pkg.mpu.umc.kdk.)。