如何仅在特定模式下定义键和弦键,例如我想将cider repl仅绑定到clojure-mode
或cider-mode
中的特定键。我只能找到一个全局激活密钥的示例。
感谢您的帮助。
编辑:
(require 'evil)
(require 'key-chord)
(evil-mode 1)
(key-chord-mode 1)
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
(key-chord-define-global "gt" 'other-window)
(key-chord-define clojure-mode-hook "gj" 'cider-jack-in)
;; error : Wrong type argument: keymapp, (rainbow-delimiters-mode)
(provide 'init-evil)
答案 0 :(得分:7)
以下是如何执行此操作的示例:
(define-key clojure-mode-map (kbd "C-c r") 'cider-repl)
...当然,您必须使用要绑定的特定命令替换cider-repl
。请注意,命令名称前面的引用'
是必需的。
概括:
(define-key <mode-map> <key-binding> '<command>)
key-chord
- 具体说明您需要更改您尝试设置clojure-mode
特定键绑定到
(add-hook 'clojure-mode-hook
(lambda () (key-chord-define clojure-mode-map "gj" 'cider-jack-in)))
为了使clojure-mode-map
的修改能够正常运行,您必须确保在按照上述说明调用define-key
时定义它。
如果您使用的是Emacs包管理器,则可能会有此行
(package-initialize)
在.emacs
文件中的某个位置(负责通过package-install
加载安装包)。请务必在此行下面的某处调用define-key
。
或者,您可以将define-key
的通话添加到启用clojure-mode
时运行的hook:
(defun clojure-set-up-key-bindings ()
(define-key clojure-mode-map (kbd "C-c r") 'cider-repl)
;; If necessary, add more calls to `define-key' here ...
)
(add-hook 'clojure-mode-hook 'clojure-set-up-key-bindings)