我希望不再在emacs中提供任何标准的osx文本编辑绑定。我使用的是标准的gnu emacs。只剩下旧学校" emacs命令。换句话说:没有更多的命令+ c用于复制,没有命令+ z用于撤销等。有没有办法在不明确重新绑定每个组合键的情况下执行此操作?我尝试使用谷歌搜索方式来做到这一点,但没有找到任何东西。
答案 0 :(得分:2)
这些键绑定在ns-win.el
中定义为here。
似乎没有简单的方法解开所有这些。您可以将ns-win.el
中的所有键绑定复制到暂存缓冲区中。它们看起来像这样:
(define-key global-map [?\s-,] 'customize)
然后点击C-M-%
query-replace-regexp
,输入^(define-key global-map \(.*\) '.*)$
作为搜索表达式,(global-unset-key \1)
作为替换,将这些键绑定转换为:
(global-unset-key [?\s-,])
然后,选择所有内容并输入M-x eval-region
。
答案 1 :(得分:1)
在OS X中的Emacs中,默认设置是CMD密钥绑定到SUPER限定符,并且诸如S-x,S-c和S-v之类的许多密钥绑定到命令以使正常的OS功能小型化。 OPTION键绑定到META。不幸的是,基本设置不允许您键入通常需要OPTION键的字符,例如“|”和“\”。
以下内容将CMD绑定到meta,并使OPTION可用于正常的字符合成。
(if (boundp 'ns-command-modifier)
(setq ns-command-modifier 'meta))
(if (boundp 'ns-option-modifier)
(setq ns-option-modifier nil))
答案 2 :(得分:1)
我发现令人反感的键绑定是绑定到 SUPER 又名命令。要禁用这些绑定,但并非所有NS
绑定都已生成:
档案global-unset-all-super-key.el
:
(defun global-unset-all-super-key ()
"Will unset any single key in global keymap that has the super
modifier."
(let ((km (current-global-map)))
(while km
(let ((maybe-event (and (listp (car km))
(caar km))))
(if (and (eventp maybe-event) ; Also filters maybe-event when
; nil because (car km) was not a list.
(memq 'super (event-modifiers maybe-event)))
(global-unset-key (vector maybe-event))))
(setq km (cdr km)))))
(provide 'global-unset-all-super-key)
将global-unset-all-super-key.el
放入Emacs lisp加载路径,并将以下内容添加到init.el
或.emacs
:
;; Remove default super bindings on Mac systems.
;; Do this early, before any mappings are added.
(when (string-equal system-type "darwin")
(require 'global-unset-all-super-key)
(global-unset-all-super-key))