最近又再次尝试攒自己的配置,但是在General和key-chord方面遇到一些小问题,请高手指教
- 由于之前使用的是doom emacs,不少与leader-key相关的配置想要直接抄过来,不过就是在这个问题上犯了难。
我想要模仿SPC h
对应的帮助菜单,在doom当中的实现方法是这样的:
-
(defalias 'define-key! #'general-def)
我理解为define-key!
事实上就是在调用general-def
- 重新定义
help-map
(define-key! help-map
;; new keybinds
"'" #'describe-char
"u" #'doom/help-autodefs
"E" #'doom/sandbox
"M" #'doom/describe-active-minor-mode
......
)
- 最后把新的
help-map
绑定到SPC h
键位上
(map! :leader
:desc "help" "h" help-map
上面的操作我大概能够理解,但是我自己模仿的时候却出了问题,下面是我的做法
- 定义我的
leader-key
(general-create-definer w1/leader-key1
:keymaps '(normal insert visual emacs)
:prefix "SPC"
:global-prefix "C-,")
- 接着把
help-map
绑定到SPC-h
(w1/leader-key1
"h" '(help-map :which-key "Help"))
这么做之后,得到的结果却是,当我使用SPC h
之后,跳出错误Wrong type argument: commandp, help-map
正确的做法应该是什么?另外我不太能理解help-map
究竟是一个什么东西,与evil-window-map
类似,help-map
是一个variable,但是当我使用
(w1/leader-key1
"w" '(evil-window-map :which-key "Window"))
的时候,却是成功的,为什么会有这样的现象?然后doom这么做为啥就行了?
- 另一个问题则有关于
general
与key-chord
,我想把jk
设置为从insert
退出到normal
的按键,在general的主页上有相关代码:
(general-define-key :keymaps 'evil-insert-state-map
(general-chord "jk") 'evil-normal-state)
不过按照general的说法,general-def
是general-define-key
的wrapper,并且推荐直接使用general-def
。然而无论我使用
(general-def 'insert
(general-chord "jk") 'evil-normal-state)
还是
(general-def evil-insert-state-map
(general-chord "jk") 'evil-normal-state)
都不能成功绑定,这是什么原因呢?
问题有点多,排版可能有些乱,见谅!