2015-06-08 21 views

回答

1

如何

:%s/Pattern 1\_.\{-}Pattern 2/\=join(split(submatch(0), "\n"), ", ")/g 

搜索

Pattern 1  # obvious 
\_.   # any character including newline 
\{-}   # repeat non-greedily (vim's way of writing *?) 
Pattern 2  # obvious 

替換部分應該是沒有明確的解釋。

+0

謝謝,它的工作原理。 – Rakesh

0

對於Vim,將

:%s/\n/, /g 

你搜索一個換行符:\n與逗號和空格替換它: ,這是全球完成g,這些選項是s由/字符組成。

更多信息有關替換VIM,你可以找到here

+0

但是,我不想跟逗號替換所有換行符。模式1和模式2之間只有某些行。並且Pattern1 ... Pattern2在文件中出現很多次。 – Rakesh

+0

哎呀,對不起,誤解了這個問題。 – streetturtle

2

代替時可以放行數。

:{pattern1LineNo},{pattern2LineNo}s/\n/, /g 
+1

僅當您知道行號和文件中涉及的區域只出現一次時纔有用。 – Tomalak

+0

@Tomalak:是的,OP沒有提到多次事件。我想確保他知道我們可以在替換時投入範圍。 –

+0

他的確在評論 – Tomalak

3

使用Pattern 1Pattern 2如地址,見:help cmdline-ranges

:/^Pattern 1/,/^Pattern 2/-1 s/\n/,/
匹配樣式1線
0
:g/Pattern1/norm V/Pattern2^MgJ 
  • :g/,運行normal模式擊鍵:

    • v isual儘可能選擇... /搜索模式2
    • gJ加入選擇的線路,無需添加空格

    NB。鍵入^MCtrl-V <Enter>,或Ctrl-Q <Enter>

相關問題