【问题标题】:delete extra blank lines in emacs删除emacs中多余的空行
【发布时间】:2011-05-24 02:30:45
【问题描述】:
M-x flush-lines ^$ 

删除缓冲区中的所有空行。但是我只想删除多余的空行,即如果有n个连续的空行我想删除n-1并保留一个。

我知道 delete-blank-lines 可以处理该点下的空白行,但是我想要一个适用于整个缓冲区的简单解决方案。

任何想法如何做到这一点?特别是可以修改我的第一个示例中的正则表达式 ^$ 以仅匹配额外的行吗?

【问题讨论】:

    标签: regex emacs


    【解决方案1】:
    C-x h M-x replace-regexp RET ^ C-q C-j C-q C-j + RET C-q C-j RET
    

    标记整个缓冲区并用一个空行替换两个或多个空行。

    【讨论】:

    • 同样,你可以这样做:M-x replace-regexp RET ^ C-q C-j $ RET RET。这将用一个替换两个连续的空行。
    【解决方案2】:

    我不知道这个内置函数,但你可以这样做:

    M-x 仅单行

    (defun single-lines-only ()
      "replace multiple blank lines with a single one"
      (interactive)
      (goto-char (point-min))
      (while (re-search-forward "\\(^\\s-*$\\)\n" nil t)
        (replace-match "\n")
        (forward-char 1)))
    

    【讨论】:

      【解决方案3】:

      C-x C-o (删除空白行)正是这样做的。你只需要一点宏魔法就可以在整个缓冲区上运行它。

      【讨论】:

      • 应该是C-x C-oC-x o 调用other-window
      猜你喜欢
      • 2017-01-15
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多