2011-10-12 74 views
10

我有了固定長度行的文本文件,通過尾隨空格狀填充:如何刪除emacs中的trailng空格?

hello world     ↩ 
this is some other line  ↩ 
x       ↩ 

,我想刪除每行後面的空格,所以它看起來像

hello world↩ 
this is some other line↩ 
x↩ 

是它寫一個emacs宏可以解決這個問題嗎?

編輯:線可具有在端部後面的空格之前的在它的空間任意數量,所以

hi  world    ↩ 

可以是在該文件中的有效行。

回答

1

Emacs有內置fixup-whitespaceM-space),其中收縮不止一個空間只有一個空格:

hello  world   ↩ 
        ^
        cursor 

M-x fixup-whitespace 

hello world ↩ 
     ^
     cursor 

所以,你可以簡單地定義一個宏:

  • 第一調用fixup-whitespace
  • 然後刪除最後一個空格

另一個可能是M-x replace-regexp RET [ ]+' RET ' RET,它使用正則表達式解決了該問題。

+1

真正正確的問題是下一步,從vhallac ... –

+0

注意,撇號是不是真正的一部分他的問題,所以你對正則表達式的建議在技術上是不正確的。 s /'/ $ /並且這是正確的。 – jrockway

+0

請注意原始問題包含撇號。 – phimuemue

31

有一個emacs命令delete-trailing-whitespace擺脫最後一個字符後的空格。如果你運行它沒有標記任何區域,它會清理整個緩衝區。如果您有活動區域,則只清潔該區域中的線條。

很多人添加以下代碼,以.emacs,這樣每當他們保存文件,所有尾隨空白被清除:

(add-hook 'before-save-hook 
      'delete-trailing-whitespace) 
1

我知道你已經有了一個答案,但在除fixup-whitespace之外,還有delete-horizontal-whitespace,它刪除點周圍的所有空白。還有一些其他相關的命令在各種情況下都很有用。你可以用M-: (info "(elisp) User-Level Deletion")來查找它們。