我尝试通过一个命令行搜索/替换一行范围和第二行范围。
Find and replace strings in vim on multiple lines说我应该能够这样做:
:2,10s/\n/ /g | 12,18&&
但这只是给了我: 第一个范围 9个替换(如预期的那样),第二个 E16:无效范围。
为什么第二个范围不起作用?
我也尝试过这样的命令:
:2,10s/\n/ /g | :12,18&&
具有相同的结果。
答案 0 :(得分:0)
哈哈......好吧,在第一个范围内用空格替换换行符导致我的第二个范围不存在,因为第12-18行变为3-9。解决方案是翻转范围,以便稍后在文件中的范围首先出现在命令中:
:12,18s/\n/ /g | 2,10&&
答案 1 :(得分:0)
在此处反转范围很有用,另一种方法是为后续范围设置标记。 Vim会自动调整添加/删除的内容:
:12mark a | 18mark b | 2,10s/\n/ /g | 'a,'b&&
一般来说,避免这样的序列是最好的;通常,一个:global
命令可以为你做迭代(这也有自动行适应)。