在 emacs 上取消设置常规密钥

unsetting regular key on emacs

这有点尴尬,但最近我碰巧每周或每两周使用 global-set-key 动态绑定常规键。
例如
我今天将 q 键绑定到 quoted-inserttoggle-read-only(不是故意的)
我试过 global-unset-key,但现在按 q 键会给我 q is undefined 消息(什么都不写)。
因为这不是我最近第一次发生这种情况,而且我讨厌每次发生这种情况时都丢失在我的 emacs 中打开的所有缓冲区,所以我正在寻找一种方法来取消设置字符键而不失去写入的能力此 char OR 将 char 重新绑定到自身(global-set-key 不允许)。尝试绑定到 insert-char 71 也失败了

(global-set-key (kbd "q") #'self-insert-command)

这是所有字母数字键的默认绑定(当然可以在某些主要或次要模式下覆盖)。

据我所知,没有办法将密钥重置为默认值。如果你想以一种可逆的方式使用键绑定,最好的办法可能是制作你自己的次要模式并且只将键绑定到它(参见 http://shallowsky.com/blog/linux/editors/emacs-global-key-bindings.html)。然后您可以轻松关闭模式,或取消定义其映射中的键,以获得全局绑定。

最后,我使用 save-visited-files(在 melpa 中)来记住(大部分)我的缓冲区。还有更完整的解决方案,例如 desktop 来保存和恢复状态。