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

42fyovps  于 2023-03-18  发布在  其他
关注(0)|答案(4)|浏览(292)

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

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

我知道我可能可以作为一个宏来做这件事,但我想更聪明的人可以找到更快/更容易的方法。
任何提示和帮助都是感激的。谢谢!

wlwcrazw

wlwcrazw1#

给予看:

: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
q3qa4bjr

q3qa4bjr2#

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

:s/|/|\r/g

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

ljsrvy3e

ljsrvy3e3#

如果您想用逗号分隔一行,请尝试按以下顺序(注意:如果您看到<C-v>,则表示Ctrl-v,如果您看到<Enter>,则表示Enter);所有其他字符应按字面意思处理:

:s/,/<C-v><Enter>/g

<C-v>允许您输入Esc、Enter、Tab等控制字符(或不可见字符)。
键入:help ins-special-keys以获取详细信息。
演示:https://asciinema.org/a/567645

fcg9iug3

fcg9iug34#

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

相关问题