0

我试图在一个函数内部进行搜索和替换,但是当它运行时它一直说有一个错误这里是有问题的行

exec "%normal /1. row/\<CR>n3ddi\nDELIMITER $$\n\<esc>" 

我无法弄清楚为什么它会向我抛出错误

我想搜索具有“1.row”的行

然后从该行删除 3 行并添加文本 DELIMITER $$

然后移动到缓冲区中的下一个

4

2 回答 2

3

我不确定你为什么要这样做normal,这里有一个似乎可行的替代方案。此版本删除了“1. row”行和之后的两个:

exec "g/1. row/.,+2d|norm! ODELIMITER $$"

这个删除了“1.row”之后的三行:

exec "g/1. row/+1,+3d|norm! ODELIMITER $$"
于 2013-07-10T14:26:32.833 回答
2

我希望你有充分的理由这样做。

  • 如果你有%,“下一个”(n)没有意义,无论如何它都会在整个缓冲区中执行。
  • 你不需要\<ESC>在命令执行后,vim 保持在正常模式。

试试这一行:

exec "%normal /1. row/\<CR>3ddi\r\r\rWHATEVER TEXT $$\r\r\r"
于 2013-07-10T13:56:14.897 回答