如何使用'M-<num>'来使用'SPC l <num>'的函数

因为’SPC ‘已经有这个功能了, 又要经常切换layout, 所以想绑定为’M-’. 刚开始想的是define-key key-translation-map, 但是又觉得手动从1写到9有点太蠢了, 又更简单的方法吗?

dolist 或者macro

试了一下发现原来

(define-key key-translation-map (kbd "M-1") (kbd "SPC l 1"))

并不能达到预期的效果, 只是弹出layour选择的弹出框而已(相当于"SPC l")

然后我又试了

(define-key key-translation-map (kbd "M") (kbd "SPC l"))

则是没反应

这样应该是不行的,因为 SPC l 会切换到 transient-statetransient-state 使用不同的 map。

根据楼主的描述,感觉你需要的是找到对应的命令,然后绑定到 global-map

你是指global-set-key吗? 这个优先级很低, 会被覆盖掉.

另一个lisp语法我不熟, 我写成下面这样是不行的

(global-set-key (kbd "M-1" ) '(spacemacs/layouts-transient-state/body spacemacs/persp-switch-to-1))
(global-set-key (kbd "M-1" ) #'spacemacs/persp-switch-to-1)

呢?

不行的, 一个是优先级的问题, 根本绑定不上, M-1还是winum-select-window-1

另外就算我绑定到一个没有绑定过的快捷键也不行

(global-set-key (kbd "C-M-l" ) #'spacemacs/persp-switch-to-1)

我可以绑定到 s-1 上:

(global-set-key (kbd "s-1" ) #'spacemacs/persp-switch-to-1)

就是 Win+1

s-n (n= 1, 2, 3, 4…) 在 spacemacs 中都没有定义,正好可以满足楼主的需求

1 个赞

不要意思, 刚才我以为没有绑定的函数的C-M-l原来是绑定了函数的.

不过我的win-绑定了跳到panel(或者叫桌面启动栏?)下面相应的应用程序…

但还是很感谢你的帮助.