我对命令“ backward-word”和“ backward-kill-word”的工作方式有一个小问题。当我在只有空格的行上击中“ backward-kill-word”时(例如,缩进行的第一个字符),该命令将杀死所有空格以及前一行。

这种行为对我来说是完全不直观的。我更喜欢它在Eclipse中的工作方式,例如,它将在第一次按下“ backward-kill-word”时杀死直到行首的空白字符,而将移至上一行的末尾。在下一次点击时,只有这样才能从行尾开始杀死单词。

我很确定此行为是大多数应用程序中的默认行为(因为它看起来似乎更直观,这可能是因为我已经习惯了,但不确定),所以我想知道是否存在一种配置Emacs使其也具有这种行为的方法。不幸的是,在Google上进行的几次搜索都没有结果。

谢谢

编辑:

感谢所有答案(包括我所要求的elisp代码)。

显然,前向杀伤词和移动命令会出现相同的问题,我希望emacs中只有一些可配置的标志来改变行为,但是看来我只是要使用这些elisp函数并为这些命令重新绑定默认的移动和杀死命令。

最佳答案

这个怎么样:

(defun my-backward-kill-word ()
  "Kill words backward my way."
  (interactive)
  (if (bolp)
      (backward-delete-char 1)
    (if (string-match "^\\s-+$" (buffer-substring (point-at-bol) (point)))
        (kill-region (point-at-bol) (point))
      (backward-kill-word 1))))

09-26 17:22