在vim

时间:2016-11-16 16:51:15

标签: vim

我尝试通过一个命令行搜索/替换一行范围和第二行范围。

Find and replace strings in vim on multiple lines说我应该能够这样做:

:2,10s/\n/ /g | 12,18&&

但这只是给了我: 第一个范围 9个替换(如预期的那样),第二个 E16:无效范围

为什么第二个范围不起作用?

我也尝试过这样的命令:

:2,10s/\n/ /g | :12,18&&

具有相同的结果。

2 个答案:

答案 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命令可以为你做迭代(这也有自动行适应)。