我可以做:%s/<search_string>/<replace_string>/g替换跨文件的字符串,或:s/<search_string>/<replace_string>/替换当前行。
如何在vim中选择和替换选择行中的单词?
例如:替换第6- 10,14 -18行,而不是第11-13行。
我可以做:%s/<search_string>/<replace_string>/g替换跨文件的字符串,或:s/<search_string>/<replace_string>/替换当前行。
如何在vim中选择和替换选择行中的单词?
例如:替换第6- 10,14 -18行,而不是第11-13行。
当前回答
作为旁注,不必输入行号,只需突出显示你想要在其中一种可视模式中查找/替换的行:
视觉模式(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
其他回答
您可以使用两个查找/替换序列来完成此操作
:6,10s/<search_string>/<replace_string>/g
:14,18s/<search_string>/<replace_string>/g
第二次你需要调整的是范围,所以我不会把它全部敲出来,我会回忆起最后一个命令,只编辑范围
/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.)。
在vim中,如果你不清楚哪些行会受到影响,请使用下面的方法
:%s/foo/bar/gc
将每个'foo'改为'bar',但要先得到确认。 按“y”表示是,按“n”表示否。之后别忘了保存
:wq
作为旁注,不必输入行号,只需突出显示你想要在其中一种可视模式中查找/替换的行:
视觉模式(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
我们不需要输入当前的行号。
如果你想把当前行(.)和接下来的两行(+2)的每个foo更改为bar,简单地做:
:.,+2s/foo/bar/g
如果你想在修改之前确认,用gc替换g:
:.,+2s/foo/bar/gc