2013-07-10 24 views
0

我嘗試做一個搜索,並與正常的一個函數裏取代,但同時運行時,它口口聲聲說這裏有一個錯誤取而代之的是有問題的行運行搜索,並與正常

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

我想不出爲什麼在我拋出錯誤

我想搜索具有「1行」

然後從該行刪除3線向下,並添加行文本分隔符$$

然後移動到下一個緩衝區中

+1

一般:

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

這其中的三條線後「1行」中刪除如果您在問題中發佈確切的錯誤消息。 –

回答

3

我不知道爲什麼你要與normal要做到這一點,這裏要說的是,似乎工作的替代品。這個版本中刪除「1行」一線兩後:要求涉及的錯誤信息是有用的問題時

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

+1。如果這樣可以更容易推理,也可以使用'd3'而不是'。,+ 2d'。沒有必要使用'exe',所以它可以被刪除,所以只需要'g/1。行/ D3 |範! ODELIMITER $$'。 –

+0

同意這兩個原因,但我以這種方式離開了答案。這個問題指出,這將是一個函數,所以可能是要匹配的字符串或者替換將來自變量,在這種情況下,exec是必要的。我也離開了這個範圍,因爲這個問題有點不清楚,而且這兩個範圍都考慮到了這兩種情況。 –

2

我希望你有很好的理由做這種方式。

  • 如果你有%,「下一個」(n)是沒有意義的,它會針對整個緩衝區反正。
  • 命令執行後,你不需要\<ESC>,vim保持正常模式。

嘗試這一行:

exec "%normal /1. row/\<CR>3ddi\r\r\rWHATEVER TEXT $$\r\r\r"