我可以:%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
。
Answers:
该:&&
命令使用相同的标志重复最后的替换。您可以为其提供其他范围(并根据需要连接多个范围):
:6,10s/<search_string>/<replace_string>/g | 14,18&&
如果您有很多范围,我宁愿使用循环:
:for range in split('6,10 14,18')| exe range 's/<search_string>/<replace_string>/g' | endfor
:6,10s/<search_string>/<replace_string>/g | :14,18&& | :20,23&& | :28,31&&
也将使工作for
更加容易记住和执行。
:
在随后的命令是可选的,顺便说一句,这样可以节省一些按键。
:&&
每周将为我节省数百次击键。谢谢!
全部替换:
:%s/foo/bar/g
找到所有出现的“ foo”(在所有行中),然后将其替换为“ bar”。
对于特定行:
:6,10s/foo/bar/g
将第6行到第10行(包括第6行)的所有行的每个“ foo”更改为“ bar”。
/
是用于指示操作标志的位置。该命令通常会替换一行中的第一个匹配项;使用该g
标志将替换所有出现的事件。
%
事情做的工作!否则,这只是第一次出现。
%
=>在所有行上运行此命令。g
=>匹配同一行中的多个事件。
作为旁注,无需键入行号,只需在一种可视模式下突出显示要查找/替换的行:
VISUAL
模式(V)VISUAL BLOCK
模式(Ctrl+ V)VISUAL LINE
模式(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 =>全局搜索
c =>首先要求确认
我=>不区分大小写
:%s/search/replace/g
:%s/search/replace/gc
:%s/search/replace/gci
通过视觉选择指定范围是可以的,但是当操作员可以选择仅几行的非常简单的操作时,最好将这些命令用作操作员。
可悲的是,这不能通过标准的vim命令来完成。您可以使用!(过滤器)运算符和任何文本对象。例如,要将操作应用于段落,您可以执行以下操作:
!ip
必须将其读为“在段落内应用运算符!”。过滤器操作员启动命令模式,并自动插入行范围,后跟文字“!”。您可以在之后删除。如果将此应用于以下段落:
1
2 Repellendus qui velit vel ullam!
3 ipsam sint modi! velit ipsam sint
4 modi! Debitis dolorum distinctio
5 mollitia vel ullam! Repellendus qui
6 Debitis dolorum distinctio mollitia
7 vel ullam! ipsam
8
9 More text around here
按“!ap”后的结果将是:
:.,.+5
作为“。” (点)表示当前行,将使用当前行与之后的5行之间的范围进行操作。现在,您可以像以前一样添加替代命令。
不好的部分是,选择文本以便稍后应用运算符并不容易。好的方面是,这可以为大小明显不同的其他类似文本范围(在本例中为段落)重复插入范围。即,如果您以后要选择范围较大的段落'。会正确的。
另外,如果您喜欢使用语义文本对象选择操作范围的想法,则可以检查我的插件EXtend.vim,该插件可以执行相同的操作, 但方式更简单。
要回答这个问题:
:40,50s/foo/bar/g
在第40行和第50行(包括50行)之间的这些行中,用bar替换foo,执行此命令时,您现在可以在任何行中。
:50,40s/foo/bar/g
同样有效,vim会要求您确认,然后为您进行替换,就好像您输入了第一个命令一样。
:,50s/foo/bar/g
在您当前所在的行和第50行(包括第50行)之间的这些行中,用foo替换bar。(如果您在第50行vim之后处于一行,则将再次要求确认)
要清除vim和Eclipse的vrapper插件之间的区别:
请注意,在varpper中
:,50s/foo/bar/g
命令将不起作用。
:50,40s/foo/bar/g
无需确认即可工作。
(对于Vrapper 0.74.0或更早版本)。
/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
假设您想将以上内容替换为其他信息。
COMMAND(:%s/\/sys\/sim\/source\/gm\/kg\/jl\/ls\/owow\/lsal/sys.pkg.mpu.umc.kdk./g)
在此上面的内容将被(sys.pkg.mpu.umc.kdk.
)代替。
%s
修改输入,但想知道如何“半全局地”进行修改(即,他的规范是6-10和14-18行,而不是11-行) 13)。
/
,如!
,@
,_
::%s_/sys/sim/source/gm/kg/jl/ls/owow/lsal_sys.pkg.mpu.umc.kdk_g