(use-package org
:ensure nil
:bind
(:map org-mode-map
(("M-RET" . func-test)
)))
结果org-mode 模式下 M-RET 还是 默认的 org-meta-return。 这个怎么解?
(use-package org
:ensure nil
:bind
(:map org-mode-map
(("M-RET" . func-test)
)))
结果org-mode 模式下 M-RET 还是 默认的 org-meta-return。 这个怎么解?
和 :map
平级的 list 多嵌套了一层吧。
没有那层嵌套也是一样的效果
(use-package org
:ensure nil
:bind (:map org-mode-map
((kbd "M-RET") . func-test))
)
我还以为直接用 define-key
跟写在use-package
里效果一样…
(define-key emacs-lisp-mode-map (kbd "M-RET")
(lambda ()
(interactive)
(message "fdf")))
兄弟,你这方法也不行。直接报错
你用没用evil
describe-key看下
可能<M-return>
也要改掉
之前遇到过一个类似的需求,供参考,不知道是否有效。
总体的思路是这样的,你需要的快捷键是在org mode下特有的,需要先将这个快捷键设为 nil
.然后再定义你需求的功能。
不知道能不能帮到你。
已经找到一个方法 ,然后再去设置:
(with-eval-after-load 'org (define-key org-mode-map (kbd “”) nil) )
但是必须是org加载完后设置才有效。不清楚org里面的快捷键加载机制。只能等org加载完了才行。其他地方都不好使。
你快捷键写错了,应该是 <M-RET>
,要加尖括号。
试试这个:
(use-package org
:ensure nil
:bind (:map org-mode-map
("<M-RET>" . func-test)))
我在很多模式中都使用了 “M-RET” 作为模式的特定快捷键入口。都没有问题。
我刚刚也试了加上<>对我不起作用
你试试 <M-return>
行不行。
RET和return是不一样的,对应不同的ASCII码,制表符分别是 \r
和 \n
。默认情况下 emacs将 return 转化为 RET。很多的mode如果没有特别定制,继承了emacs的这一特点。特别的,org-mode使用 M-return, C-return 而不是 M-RET, C-RET。
详细看这篇文章:Emacs中的 return, RET, Enter, Ctrl-m解析 | Emacs | zhangley.com
另外,你也可以查看 org-mode-map 变量,里面使用的也是 M-return 。
非常感谢,等我晚上有空了研究下RET,C-m,return
可以使用kbd函数来绑定键,不需要用<>来绑定