在Vim交互式会话中折叠空行

时间:2012-07-19 23:07:08

标签: regex vim buffer lines

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

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

因为我只想跟踪Vim处理正则表达式的方式可能存在的误解,涉及某种形式或其他迭代的解决方案(Vim的“:global”命令,宏,函数等等) 。)我在寻找什么。


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

2 个答案:

答案 0 :(得分:3)

您可以使用多行模式:

:%s/^\_s*$//

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

答案 1 :(得分:0)

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

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

如果您认为不是这种情况,只需更改替代品中的//即可 例如,命令由一串破折号...

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

你会注意到所有空行都被10个短划线取代!

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

如果没有,请解释您认为它应该如何运作。