0

入力時に (delete-trailing-whitespace) を追加したかったのです。

何が得られるのかがわからないため、新しい関数にバインドできません。

どうすればこれを達成できますか?

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

この回答とそのコメントを見てください。

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

編集した行からのみws-trim末尾の空白を自動的に削除するために使用します(これは、 のキーバインディングで達成したいと考えていることに対するより堅牢なソリューションです)。enter

event_jr も言及ws-butlerしていますが、これは同様のことを行いますが、保存時に末尾の空白のみを削除します (編集した行からのみ)。

于 2013-01-31T00:32:36.043 に答える
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 に答える