1

在交互式编辑 Vim 缓冲区时,如何通过单个替换命令将多个空行(真正为空或包含可选空格)的每个序列替换为单个空行 - 最好不要从非空行中删除任何尾随空格...?

自然地,这样的多个“空”行块可能存在于缓冲区中的任何位置,包括缓冲区的开头和结尾。

由于我只对追踪我对 Vim 处理正则表达式方式的误解感兴趣,涉及某种形式或其他迭代的解决方案(Vim 的 ":global" 命令、宏、函数......等)是不是我要找的。


我需要修正一个错字,所以我使用 CTRL-H 来尝试修正它。奇怪的事情发生了 :-) 当我按下 Enter 键转到下一行时,我输入的任何内容都会被发布,我必须使用编辑按钮向其中添加内容。@kev:非常有趣的解决方案,我确实有很多问题.. 但我什至无法回复您的帖子.. 我刚刚发现我的“声誉”还不够.. 所以你必须等到我找到一个改变它的方法..!我不认为有任何方法可以通过常规邮件列表使用这个论坛..?我刚刚注意到我还剩下 -176 个字符。因此,我最初的努力被截断了。哦,好吧..

4

2 回答 2

3

您可以使用多行模式:

:%s/^\_s*$//

\_s匹配空格(包括换行符)

于 2012-07-19T23:34:09.920 回答
0

@xev ..你没有回答这个问题。您的替换命令查找空行并将它们替换为//,换句话说,什么都不替换!

您正在删除这些行而不是折叠它们。

如果您认为情况并非如此,只需//通过例如一串然后破折号来更改替代命令中的 ..

:%s/^\_s*$/----------/

您会注意到所有空行都被十个破折号替换!

也许你正在运行一个旧的错误版本的 Vim?

如果不是,请解释您认为它应该如何工作。

于 2012-07-23T20:25:56.860 回答