我可以做:%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行。
当前回答
您可以使用两个查找/替换序列来完成此操作
:6,10s/<search_string>/<replace_string>/g
:14,18s/<search_string>/<replace_string>/g
第二次你需要调整的是范围,所以我不会把它全部敲出来,我会回忆起最后一个命令,只编辑范围
其他回答
在vim中,如果你不清楚哪些行会受到影响,请使用下面的方法
:%s/foo/bar/gc
将每个'foo'改为'bar',但要先得到确认。 按“y”表示是,按“n”表示否。之后别忘了保存
:wq
您可以使用两个查找/替换序列来完成此操作
:6,10s/<search_string>/<replace_string>/g
:14,18s/<search_string>/<replace_string>/g
第二次你需要调整的是范围,所以我不会把它全部敲出来,我会回忆起最后一个命令,只编辑范围
要回答这个问题:
: 40、50年代/ foo / bar / g
在第40行和第50行(包括在内)之间的这些行中,将foo替换为bar,当执行此命令时,您当前可以在任何行中。
: 50、40年代/ foo / bar / g
同样有效,vim将要求您确认,然后为您执行替换,就像您已经输入了第一个命令一样。
: 50年代/ foo / bar / g
在你当前所在行和第50行(包括第50行)之间的这些行中,用bar替换foo。(如果你排在第50行之后,vim会再次要求确认)
为了明确vim和Eclipse的vrapper插件的区别:
注意在varpper中
:,50s/foo/bar/g命令将不起作用。
:50,40s/foo/bar/g可以不需要确认。
(适用于Vrapper 0.74 4.0或更老版本)。
&&命令使用相同的标志重复最后一次替换。你可以提供额外的范围(s)到它(和连接尽可能多的你喜欢):
: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
VI搜索和替换命令示例
假设你想找到一个叫“foo”的单词,并将其替换为“bar”。
第一次按[Esc]键
输入:(冒号)后跟%s/foo/bar/,然后按[Enter]键
: % s / foo -酒吧