我有一个文本文件,它有固定长度的行,用尾随空格填充,如:
hello world ↩
this is some other line ↩
x ↩
我希望删除每一行的尾随空格,使其看起来像
hello world↩
this is some other line↩
x↩
是否可以编写可解决此问题的emacs宏?
编辑:在结尾的尾随空格之前,行可以有任意数量的空格,所以
hi world ↩
可以是此文件中的有效行。
答案 0 :(得分:36)
有一个emacs命令delete-trailing-whitespace
可以删除最后一个字符后面的空格。如果在没有标记任何区域的情况下运行它,它将清除整个缓冲区。如果您有一个活动区域,则只清除该区域中的行。
很多人将以下代码添加到.emacs
,以便每当他们保存文件时,都会清除所有尾随空格:
(add-hook 'before-save-hook
'delete-trailing-whitespace)
答案 1 :(得分:1)
Emacs有内置的fixup-whitespace
(M-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