如何撤消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中的填充段落?的主要内容,如果未能解决你的问题,请参考以下文章