如何 unbind 所有的以 C-t 为开头的快捷键

我需要将 emacs 中所有的(全局的和局部的)以C-t为开头的快捷键取消,大家有什么好的方法?

前提得是能找到所有的 keymap。

我这里 C-t 执行的是 transpose-chars 命令,暂未发现有覆盖它的地方。如果不喜欢 C-tC-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* 最终解救了我.