And*_*ter 52 vim sed regular-expression
问题或多或少说明了一切。我知道这/^$/d
会删除所有空行,但我不知道怎么说“用一个空行替换两个或多个空行”
有任何想法吗?
Cal*_*leb 61
如果您不将 vim 或 sed 用于其他用途,则 cat 实际上有一个简单的内置方法来折叠多个空白行,只需使用cat -s
.
如果您已经在 vim 中并想留在那里,您可以通过内部搜索来执行此操作并通过发出替换:(:%s!\n\n\n\+!^M^M!g
^M 是换行符的视觉表示,您可以通过点击Ctrl+输入它vEnter),或者保存自己只需打字 cat: :%!cat -s
。
Gil*_*il' 19
用于\n
在搜索模式中指示换行符。在替换文本中使用Ctrl+M或反向引用。请参阅:help pattern
和:help sub-replace-special
(链接自:help :s
)。
%s/\(\n\n\)\n\+/\1/
Run Code Online (Sandbox Code Playgroud)
如果在 Vim 中,只需执行以下操作:
:%!cat -s
Run Code Online (Sandbox Code Playgroud)
-s
用于cat
将多个空行压缩为一个的标志。