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


In Vim how do I split a long string into multiple lines by a character?

我有一根很长的regex线

1
(\.#.+|__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)$

我想用|将其拆分,并将每个组件放到一个新的行中。

所以最后的形式是这样的

1
2
3
4
5
6
7
(\.#.+|
__init__\.py.*|
\.wav|
\.mp3|
\.mo|
\.DS_Store|
... etc

我知道我可以用宏的形式来完成这个任务,但我认为聪明的人可以找到更快更容易的方法。

任何提示和帮助都会受到感激。谢谢!


尝试一下:

1
2
:s/|/|
/g

以上内容将在当前行中有效。

要对整个文件执行替换,请在s之前添加一个%

1
2
:%s/|/|
/g

击穿:

1
2
3
4
5
6
7
8
9
10
:    - 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)
|
  - what we want to replace the substitution pattern with
/    - another separator
g    - perform the substitution multiple times per line


用自身和换行符(
替换|的每个实例:

1
2
:s/|/|
/g

(确保执行前光标位于有问题的行上)


实际上,您不必在模式前添加|,尝试使用这个s/,/,
/g
,它将在换行符后用逗号替换逗号。