2015-06-08 22 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>

相关问题