在 Aquamacs 中将“cmd”+“W”重新映射到 kill-buffer?

在 Aquamacs 中将“cmd”+“W”重新映射到 kill-buffer?

Aquamacs 3.2,我想重新映射cmd+ W,这样它就会终止当前缓冲区而不是关闭框架。我使用 Aquamacs 的经典 Emacs 风格,只有一个窗口,因此我关闭缓冲区的次数远多于关闭窗口的次数。

我尝试过这个,但.emacs没有效果。

(global-unset-key [?\s-w])
(define-key global-map [?\s-w] 'kill-buffer)

我也尝试了这个答案但它仍然会关闭窗口。

(defun kill-current-buffer ()
  (interactive)
  (kill-buffer (current-buffer)))
(global-unset-key (kbd "s-w"))
(global-set-key (kbd "s-w") 'kill-current-buffer)

我也尝试将该代码~/Library/Preferences/Aquamacs Emacs/Preferences.el放入在这个答案中建议

我已经验证describe-function它已经加载。

kill-current-buffer is an interactive Lisp function in `.emacs'.

It is bound to s-W.

(kill-current-buffer)

Not documented.

答案1

有两件事正在发生。首先,Aquamacs 已将 Mac OS X 命令键重新映射到alt。因此它应该是(global-set-key '[(alt w)] 'kill-current-buffer)

但是这会给出警告,因为第二件事,osx-key-mode已经定义了自己的osx-key-mode-map。Emacs 建议使用重新定义该键映射中的该键define-key

(defun kill-current-buffer ()
  (interactive)
  (kill-buffer (current-buffer)))
(when (boundp 'osx-key-mode-map)
    (define-key osx-key-mode-map '[(alt w)] 'kill-current-buffer))

相关内容