当使用 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
。如果您有包含单个字符的行,这将错过一些换行符,请再次运行该命令来替换它们。