使用特定模式定义键和弦键

Far*_*ion 5 emacs

如何仅在特定模式下定义键和弦键,例如我想将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)
Run Code Online (Sandbox Code Playgroud)

its*_*eyd 7

定义特定于模式的键绑定

以下是如何执行此操作的示例:

(define-key clojure-mode-map (kbd "C-c r") 'cider-repl)
Run Code Online (Sandbox Code Playgroud)

...当然,您必须cider-repl使用要绑定的特定命令进行替换.请注意,'命令名称前面的引号是必需的.

概括:

(define-key <mode-map> <key-binding> '<command>)
Run Code Online (Sandbox Code Playgroud)

key-chord特定说明

您需要更改尝试设置clojure-mode特定键绑定的行

(add-hook 'clojure-mode-hook 
          (lambda () (key-chord-define clojure-mode-map "gj" 'cider-jack-in)))
Run Code Online (Sandbox Code Playgroud)

附录:确保在修改模式映射之前定义模式映射

为了使修改能够clojure-mode-map正常工作,您必须确保在调用时define-key如上所述定义它.

如果您使用的是Emacs软件包管理器,则可能会有此行

(package-initialize)
Run Code Online (Sandbox Code Playgroud)

在您的.emacs文件中的某个地方(负责加载通过安装的包package-install).确保你打电话define-key这条线下面的某个地方.

或者,您可以将调用添加到启用时运行define-key挂钩clojure-mode:

(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)
Run Code Online (Sandbox Code Playgroud)