簡體   English   中英

Vim中的正則表達式 - 在編號行之前插入空白行

[英]Regex in Vim- inserting blank line before numbered lines

我有以下文字:

Title line
1. First list
First line
Second line
2. Second list
Oranges
Mangoes
3. Stationary
Pen
Pencils
Etc

我想在每個編號行之前添加一個空行,以便上面的文字如下所示:

Title line

1. First list
First line
Second line

2. Second list
Oranges
Mangoes

3. Stationary
Pen
Pencils
Etc

我嘗試了以下代碼,但它無法正常工作:

%s/^(\d)/\r\1/g

%s/(^\d)/\r\1/g

s/^([0-9])/\\r\\1/gc

問題在哪里以及如何解決。 謝謝你的幫助。

您應該在VIM語法中轉義括號,以表示它是一個特殊的集群:

%s/^\(\d\)/\r\1/g

或者使用匹配結束零寬度斷言\\ze )令牌:

%s/^\ze\d/\r

要使用捕獲組()而不必轉義它們,請使用\\v very magic(參見:h /magic

:%s/\v^(\d)/\r\1/

請注意, g標志是多余的,因為在行的開頭只能有一個匹配

由於替換部分需要整個匹配的字符串,因此可以簡單地使用&\\0而無需顯式捕獲組

:%s/^\d/\r&/


評論中提到

:g/^\d/norm O

g命令允許過濾行並在這些行上執行命令,如norm O打開上面的新行。 默認范圍是整個文件,因此不需要%

使用substitute命令,這將是:g/^\\d/s/^/\\r/

請參閱:h :g:h ex-cmd-index以獲取要使用的命令的完整列表:g

你可以使用全局命令, :g來執行一個空:put在匹配的數字之前:put每一行, ^\\d

:g/^\d/pu!_

注意:使用黑洞寄存器, "_ ,結合:put給我們空行。

有關更多幫助請參閱:

:h :g
:h /\d
:h :put
:h quote_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM