Emacs

在 Emacs 中取消自動填充

  • April 18, 2019

使用 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:禁用自動填充模式。

我想知道這是否是一個好方法,或者是否有更好的方法。

您可以進行搜尋和替換:

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

Emacs 現在將開始用空替換每個換行符。如果您想擺脫所有這些,請按!。如果您想驗證每次刪除,請在適當的時候按住y或。n

自動填充插入的換行符與其他方法插入的換行符沒有區別(鍵入,複製粘貼,從搜尋和替換,…)。根據您的描述,您嘗試做的似乎是用空格替換單個換行符,並單獨留下多個連續的換行符。您可以使用正則表達式替換來做到這一點,但這並不比您一直在做的簡單得多。呼叫M-x replace-regexp(或M-%)替換\(.\)^J\(.\)\1 \2(其中^J是文字換行符,您可以通過鍵入來插入C-q C-j。如果您有包含單個字元的行,這將失去一些換行符,請再次執行該命令以替換這些換行符。

引用自:https://unix.stackexchange.com/questions/46792