如何删除emacs中的尾部空格?

时间:2011-10-12 21:40:27

标签: emacs

我有一个文本文件,它有固定长度的行,用尾随空格填充,如:

hello world                 ↩
this is some other line     ↩
x                           ↩

我希望删除每一行的尾随空格,使其看起来像

hello world↩
this is some other line↩
x↩

是否可以编写可解决此问题的emacs宏?

编辑:在结尾的尾随空格之前,行可以有任意数量的空格,所以

hi     world                ↩

可以是此文件中的有效行。

4 个答案:

答案 0 :(得分:36)

有一个emacs命令delete-trailing-whitespace可以删除最后一个字符后面的空格。如果在没有标记任何区域的情况下运行它,它将清除整个缓冲区。如果您有一个活动区域,则只清除该区域中的行。

很多人将以下代码添加到.emacs,以便每当他们保存文件时,都会清除所有尾随空格:

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

答案 1 :(得分:1)

Emacs有内置的fixup-whitespaceM-space),它将多个空间缩小到只有一个空格:

hello      world         ↩
                    ^
                  cursor 

M-x fixup-whitespace

hello world ↩
           ^
         cursor

因此,您可以简单地定义一个宏:

  • 首先致电fixup-whitespace
  • 然后删除最后一个空格

另一个可能是M-x replace-regexp RET [ ]+' RET ' RET,它使用正则表达式来解决问题。

答案 2 :(得分:1)

我知道你已经得到了答案,但除了fixup-whitespace之外,还有delete-horizontal-whitespace删除了点周围的所有空格。还有一些其他相关命令在各种情况下都很有用。您可以使用M-: (info "(elisp) User-Level Deletion")查找它们。

答案 3 :(得分:1)

http://www.emacswiki.org/emacs/DeletingWhitespace有你需要知道的全部内容。

这个很快,适用于所有Emacs版本:

M-x picture-mode,然后 C-c C-c