elisp 小白问个关于绑定快捷键的问题

由于魔改了键位导致无法方便的打出 | ,所以想把命令 org-table-create-or-convert-from-region 的快捷键 C-c | 换成 Space r t 。用的是 doom emacs,于是就在文件里加了 (map! :desc "create-table" :ne "SPC r t" #'org-table-create-or-convert-from-region) refresh 后,如果没有选中文字,效果和 M-x 后直接敲命令效果是一样的,但如果选中了文字,再按 SPC r t 就会显示该键位没有定义。求解。

doom了解不多,但是应该是你没用绑定到visual mode。选中模式的keymap是不一样的

请问如果就是普通的 emacs,应该怎么写呢?

前面老哥说的对,选中文本后对应的是 keymap 是visual mode 的,你在按键中没有绑定

可以改成下面这样:

(map! :nev "SPC r t" #'org-table-create-or-convert-from-region)

你可以看看 map! 的文档,也可以使用 doom 的 leader key,写下面这样

(map! :leader
      :nev "rt" #'org-table-create-or-convert-from-region)

不过你绑定到 emacs mode 之后,空格键怎么输 ?一般情况下没必要绑定到 emacs mode 吧:sweat_smile:

感谢老哥!我其实原来一直没有搞懂 nev 代表了什么,这些代码都是从别的地方抄过来自己改的 :’(

然后还想问一下,map Marco 到底哪里有文档,我在 doom emacs 里找了半天没有找到。

spc h f,然后输函数名就行

或者 spc spc describe-function 回车,然后再输函数名

需要的函数或者宏都可以这么查,类似的也可以查快捷键、变量之类

哦哦,好的!