在Vim中,如何通过字符将长字符串拆分为多行?

时间:2013-05-31 06:03:49

标签: vim

我有这个很长的正则表达式字符串

(\.#.+|__init__\.py.*|\.wav|\.mp3|\.mo|\.DS_Store|\.\.svn|\.png|\.PNG|\.jpe?g|\.gif|\.elc|\.rbc|\.pyc|\.swp|\.psd|\.ai|\.pdf|\.mov|\.aep|\.dmg|\.zip|\.gz|\.so|\.shx|\.shp|\.wmf|\.JPG|\.jpg.mno|\.bmp|\.ico|\.exe|\.avi|\.docx?|\.xlsx?|\.pptx?|\.upart)$

我希望将其拆分为|,并将每个组件放在一个新行上。

在最终形式中这样的事情

(\.#.+|
__init__\.py.*|
\.wav|
\.mp3|
\.mo|
\.DS_Store|
... etc

我知道我可以将它作为一个宏来做,但我认为更聪明的人可以找到更快/更简单的方法。

任何提示和帮助表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:51)

尝试一下:

:s/|/|\r/g

以上内容适用于当前行。

要对整个文件执行替换,请在s:

之前添加%
:%s/|/|\r/g

故障:

:    - enter command-line mode
%    - operate on entire file
s    - substitute
/    - separator used for substitute commands (doesn't have to be a /)
|    - the pattern you want to replace
/    - another separator (has to be the same as the first one)
|\r  - what we want to replace the substitution pattern with
/    - another separator
g    - perform the substitution multiple times per line

答案 1 :(得分:19)

|的每个实例替换为自身和换行符(\r):

:s/|/|\r/g

(确保在执行前光标位于相关行上)

答案 2 :(得分:-4)

实际上你不必在模式之前添加|,试试这个s/,/,\r/g它会在换行符之后用逗号替换逗号。