在vim中的多个范围内搜索和更换

在vim中的多个范围内搜索和更换,vim,Vim,我试图通过一个命令搜索/替换一系列行和第二系列行 说我应该可以这样做: :2,10s/\n//g | 12,18& 但这给了我: 第一个量程的1行上有9个替换(如预期),第二个量程的E16:无效量程 为什么第二个靶场不起作用 我也尝试过这样的命令: :2,10s/\n//g|:12,18& 同样的结果。哈哈。。。好的,在第一个范围中将换行符替换为空格会导致第二个范围不存在,因为第12-18行更改为类似3-9的内容。解决方案是翻转范围,以便文件后面的范围在命令中位于第一位: :12,18s/\n/

我试图通过一个命令搜索/替换一系列行和第二系列行

说我应该可以这样做:

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

但这给了我: 第一个量程的1行上有9个替换(如预期),第二个量程的E16:无效量程

为什么第二个靶场不起作用

我也尝试过这样的命令:

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


同样的结果。

哈哈。。。好的,在第一个范围中将换行符替换为空格会导致第二个范围不存在,因为第12-18行更改为类似3-9的内容。解决方案是翻转范围,以便文件后面的范围在命令中位于第一位:


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

哈哈。。。好的,在第一个范围中将换行符替换为空格会导致第二个范围不存在,因为第12-18行更改为类似3-9的内容。解决方案是翻转范围,以便文件后面的范围在命令中位于第一位:


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

此处反转范围很有帮助,另一种方法是为后续范围设置标记。Vim自动调整添加/删除:

:12mark a | 18mark b | 2,10s/\n/ /g | 'a,'b&&

一般来说,最好避免这样的顺序;通常,单个
:global
命令可以为您执行迭代(这也具有自动行自适应)。

反转范围在这里很有用,另一种方法是为后续范围设置标记。Vim自动调整添加/删除:

:12mark a | 18mark b | 2,10s/\n/ /g | 'a,'b&&
一般来说,最好避免这样的顺序;通常,一个
:global
命令就可以为您完成迭代(这还具有自动行自适应功能)。

我相信您会在这里找到答案。我相信你会在这里找到答案。