取消 Emacs 中的自动填充

取消 Emacs 中的自动填充

当使用 Emacs(版本 24.1,如果有什么区别的话)时,我希望有一种方法可以删除次要模式插入的所有自动换行符auto-fill

禁用auto-fill-mode足以避免插入新的自动换行符,但对于取消现有的自动换行符没有任何作用。

我找到了一种方法来做我想做的事,但我想知道这是否是最好的方法。我在这里描述它,希望它能帮助更好地解释我的问题:

  • C-u 1000 C-x f:将 设定current-fill-column为任意大的值。
  • C-x h:选择缓冲区中的所有文本
  • M-q:根据新current-fill-column值重新排列换行符。如果该值足够大,这将模拟我正在寻找的行为。
  • M-x auto-fill-mode:禁用自动填充模式。

我想知道这是一个好方法还是有更好的方法。

答案1

您可以进行搜索和替换:

M-%
(Prompt: Query replace: ) C-q C-j Enter
(Prompt: Query replace  with: )Enter

Emacs 现在将开始将每个换行符替换为空。如果您想删除所有这些,请按!。如果您想验证每个删除,请根据需要继续按y或。n

答案2

通过自动填充插入的换行符与通过其他方法(键入、复制粘贴、搜索和替换等)插入的换行符没有什么不同。根据您的描述,您想要做的是将单个换行符替换为空格,并单独保留多个连续换行符。您可以通过正则表达式替换来做到这一点,但这并不比您所做的简单得多。调用M-x replace-regexp(或M-%) 来替换\(.\)^J\(.\)\1 \2(其中^J是文字换行符,您可以通过键入 来插入它C-q C-j。如果您有包含单个字符的行,这将错过一些换行符,请再次运行该命令来替换它们。

相关内容