我需要将 emacs 中所有的(全局的和局部的)以C-t为开头的快捷键取消,大家有什么好的方法?
前提得是能找到所有的 keymap。
我这里 C-t
执行的是 transpose-chars
命令,暂未发现有覆盖它的地方。如果不喜欢 C-t
或 C-t keys
的话,不用管它就完了;如果非要阻止其他人(包括现在和将来)使用它们的话,可以自己绑定一个
(bind-key* "C-t" #'undefined)
不过我不知道你的标题中问题的答案。
这个恐怕不行, 我只是需要在为 exwm 设置 C-t 之前,清除所有的其他C-t绑定,不是要完全禁用 C-t, 相反,C-t 对我来说非常重要
我暂时这么搞的:
(defvar exwmx-grocery--unset-key nil
"Record the key which will be unset from emacs.")
(defun exwmx-grocery-unset-key (key)
"Unset `key' from emacs's all buffers."
;; `global-set-key' only run once, for `exwm-input-set-key'
;; will use `global-set-key' to set key.
(global-set-key (kbd key) nil)
(setq exwmx-grocery--unset-key key)
(add-hook 'buffer-list-update-hook
#'exwmx-grocery--unset-key)
(message "Exwm-X: unset key %S from all buffers." key))
(defun exwmx-grocery--unset-key ()
"Internal function, used by `exwmx-grocery-unset-key'."
(let ((key exwmx-grocery--unset-key))
(when key
(dolist (buffer (buffer-list))
(with-current-buffer buffer
(local-set-key (kbd key) nil))))))
没用过 exwm,也没有上下文,我并不明白的你需要解决的问题是什么。或许 exwm 用户才能明白?
我需要保留 C-t 作为切换外部程序的快捷键, 不能被emacs使用了
如果没有用过 exwm,那你确实很难理解我的需求:-)
思路僵化真可怕, bind-key* 最终解救了我.