如何撤消emacs中的填充段落?

Posted

技术标签:

【中文标题】如何撤消emacs中的填充段落?【英文标题】:How to undo fill-paragraph in emacs? 【发布时间】:2010-03-18 16:27:30 【问题描述】:

我有一个很长的文本文件。有什么简单的方法可以在不久前写入和保存的文件上“撤消”M-q(填充段落)?

例如,我想改变这个:

他们来带我走, 哈哈哈!! 他们来带我 走开,嗬嗬,嘻嘻,哈哈

去有趣的农场。生活在哪里 一直都很漂亮,我会 很高兴看到那些漂亮的年轻人 他们干净的白色外套,他们是 来带我走,哈哈哈!!!!!

对此:

他们来带我走, 哈哈哈!!他们来接我 走开,嗬嗬,嘻嘻,哈哈

去有趣的农场。生活在哪里 一直都很漂亮,我会 很高兴看到那些漂亮的年轻人 他们干净的白大褂,他们 来带我走,哈哈哈!!!!!

【问题讨论】:

【参考方案1】:

使用我的 .emacs 中的以下内容:

(defun unfill-paragraph ()
  (interactive)
  (let ((fill-column (point-max)))
    (fill-paragraph nil)))

(defun unfill-region ()
  (interactive)
  (let ((fill-column (point-max)))
    (fill-region (region-beginning) (region-end) nil)))

我不敢相信,我在几年前用谷歌搜索过。

【讨论】:

【参考方案2】:

您可以将fill-columnn 设置为一个非常大的数字,然后填充。

C-u 10000 C-x f M-x fill-individual-paragraphs

或者你可以使用一些自定义函数:

(defun refill-paragraphs-to-be-one-line ()
  "fill individual paragraphs with large fill column"
  (interactive)
  (let ((fill-column 100000))
    (fill-individual-paragraphs (point-min) (point-max))))

【讨论】:

感谢您,但请注意:您的函数似乎不适用于以破折号 (-) 或星号 (*) 等符号开头的段落,而 Doug Harris 给出的函数做。自从您 8 年前发布此内容以来,可能发生了一些变化。【参考方案3】:

当我在 emacs 24.4.1 中寻求有关 M-Q(而不是 M-q)的帮助时,我得到了:

M-Q (translated from <escape> Q) runs the command unfill-paragraph, which is an
interactive Lisp function in `init-util.el'.

It is bound to M-Q.

(unfill-paragraph &optional REGION)

Takes a multi-line paragraph and makes it into a single line of text.

【讨论】:

这可能是因为您将 this page 中的代码添加到了 Emacs 配置中。 不。我在 modules/init-util.el 中找到了它 该文件不包含在 vanilla GNU Emacs 中。也许它来自您的发行版或您安装的软件包。 我不建议将键绑定到使用 Command 作为其 Meta 键的 macOS 用户:Cmd-Q 表示退出所有应用程序并注销 :) 在您的回答中值得一提吗? @dcorking - 满足您请求的编辑被当权者拒绝。您的评论需要作为唯一的警告。【参考方案4】:
C-x f 100000 M-q

这正好填满一个段落。

解释:

    C-x f Number:为列设置大量(100 000)个字符。 M-q:调用fill-paragraph 命令。 (多段备选方案:M-x fill-individual-paragraphs

之后,不要忘记将列宽恢复为之前的值(这里:78)。

C-x f 78

【讨论】:

以上是关于如何撤消emacs中的填充段落?的主要内容,如果未能解决你的问题,请参考以下文章

如何将填充段落与 supercite 结合起来?

如何在 Emacs 中禁用自动填充模式?

如何使用动作脚本 3.. 调整 xml 数据中段落之间的填充?

段落之间垂直间距的 CSS 框模型(边距和填充)

段落文本上的 Chrome 填充问题

使用自动填充模式自动重新填充整个段落?