我有这个很长的正则表达式字符串
(\.#.+|__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
我知道我可以将它作为一个宏来做,但我认为更聪明的人可以找到更快/更简单的方法。
任何提示和帮助表示赞赏。谢谢!
答案 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
它会在换行符之后用逗号替换逗号。