【问题标题】:Collapsing empty lines in a Vim interactive session在 Vim 交互式会话中折叠空行
【发布时间】:2012-07-19 23:07:07
【问题描述】:

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

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

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


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

【问题讨论】:

    标签: regex vim buffer lines


    【解决方案1】:

    你可以使用多行模式:

    :%s/^\_s*$//
    

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

    【讨论】:

    • 也许你应该用\r代替而不是删除它们……只是为了匹配问题。
    • @sidyll 此命令会将多个空行压缩为一个。添加\r 将产生两个空行。
    • 抱歉耽搁了。看来我需要找一个教程来学习如何使用这个论坛。特别是我需要禁用那些几乎不可能使用 SO 的“编辑器”的奇怪快捷方式。例如,每次我需要修复一个错字时,我都会使用 CTRL-H 来尝试修复它。奇怪的事情发生了 :-)
    • 抱歉耽搁了。看来我需要找一个教程来学习如何使用这个论坛。特别是我需要禁用那些几乎不可能输入评论的奇怪快捷方式。例如,每次我需要修复一个错字时,我都会使用 CTRL-H 来尝试修复它。奇怪的事情发生了 :-)
    【解决方案2】:

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

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

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

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

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

    也许你正在运行一个旧的有缺陷的 Vim 版本?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2011-07-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多