0

我想在输入时添加(删除尾随空格)。

我找不到提供的东西,因此我无法将它绑定到我的新功能。

我怎样才能做到这一点?

4

4 回答 4

8

就我个人而言,我不建议将其绑定到 enter 键,因为这可能经常发生并且可能很慢,而是我使用

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

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

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

于 2013-01-30T23:32:01.863 回答
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))

这不像耶稣拉莫斯的答案那么好,但它是你所要求的。

于 2013-01-31T00:48:47.663 回答
2

键必须绑定到命令,因此首先定义一个执行您想要的命令:

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

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

(global-set-key (kbd "RET") 'delete-trailing-whitespace-newline)
于 2013-01-30T23:29:57.623 回答
2

看看这个答案及其评论:

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

我使用仅从ws-trim我编辑的行中自动删除尾随空格(这是我认为您希望通过键绑定实现的更强大的解决方案)。enter

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

于 2013-01-31T00:32:36.043 回答