在emacs中添加一个函数<enter> </enter>

时间:2013-01-30 23:14:23

标签: emacs

我想用enter添加(delete-trailing-whitespace)。

我找不到什么,因此我无法将其绑定到我的新功能。

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:8)

我个人不建议将它绑定到回车键,因为这可能会经常发生并且可能很慢,而是我使用

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

这只会在您保存文件时删除所有尾随空格,而不是每次按下某个键时删除。

如果您仍想绑定它,请参阅@ ataylor的答案。

答案 1 :(得分:3)

如何从 RET 上的行中删除空格?

(defun delete-whitespace-on-this-line-then-newline ()
  "before doing a newline, remove any trailing whitespace on this line"
  (interactive)
  (save-match-data
    (save-excursion
      (beginning-of-line)
      (when (re-search-forward "\\s-+$" (line-end-position) t)
        (replace-match ""))))
  (newline))

这不像Jesus Ramos's那么好,但它是你所要求的。

答案 2 :(得分:2)

键必须绑定到命令,因此首先定义一个执行所需操作的命令:

(defun delete-trailing-whitespace-newline ()
  (interactive)
  (delete-trailing-whitespace)
  (newline))

defun需要顶级的交互式表单作为命令。然后将密钥绑定到命令:

(global-set-key (kbd "RET") 'delete-trailing-whitespace-newline)

答案 3 :(得分:2)

看看这个答案及其评论:

https://stackoverflow.com/a/14164500/324105

我使用ws-trim从我编辑的行中自动删除尾随空白 (这是一个更强大的解决方案,我相信你希望通过键绑定来实现< KBD>输入)。

event_jr还提到了ws-butler,它做了类似的事情,但只保存时删除尾随空格(仍然只从你编辑过的行中删除)。