在 emacs 中定义定义键的正确方法是什么
What is proper way to define define-key in emacs
我正在尝试在 spacemacs 中切换 insert/normal 邪恶模式。
我已经用下面的代码成功地做到了这一点。但是我的 macbook pro 2018 13' 上 Caps-lock 旁边的 LED 灯停止工作。所以我想用脚本在我的大写锁定上切换 led。
我正在使用 karabiner-elements 将大写锁定重新映射到 f13。当 emacs 记录 f13 时,它会将状态更改为 evil-normal-state 或 evil-insert-state。
问题开始了,当我想在按下 f13 又名大写锁定时向 运行 添加另一个命令。它的 (shell-command "/Users/atrumoram/setleds +caps")
。这会打开大写锁定灯或将其关闭。我试图制作自己的函数 defun
。但我真的不能让它一起工作。最后我想要这样的东西。
这是使用大写锁定
在邪恶中切换 insert/normal 模式的代码
(define-key evil-insert-state-map (kbd "<f13>") 'evil-normal-state)
(define-key evil-normal-state-map (kbd "<f13>") 'evil-insert-state)
最后我想要这样的东西
(define-key evil-insert-state-map (kbd "<f13>") 'evil-normal-state (shell-command "/Users/atrumoram/setleds +caps"))
(define-key evil-normal-state-map (kbd "<f13>") 'evil-insert-state (shell-command "/Users/atrumoram/setleds -caps"))
有什么办法可以帮助我吗?期待您的想法。
一个键一次只能绑定到一个函数,所以为了在您按下该键时发生两件事,您需要创建一个函数,使其成为 "interactive",然后绑定它到你想要的钥匙。
这个函数一个接一个地执行两个动作:
(defun my-evil-normal-state-and-set-caps-led ()
(interactive)
(evil-normal-state)
(shell-command "/Users/atrumoram/setleds +caps"))
因为它被声明为一个 interactive
函数,你可以用 M-x my-evil-normal-state-and-set-caps-led
.
来测试它
那么就是:
(define-key evil-insert-state-map (kbd "<f13>") 'my-evil-normal-state-and-set-caps-led)
反之切换到插入状态
我正在尝试在 spacemacs 中切换 insert/normal 邪恶模式。 我已经用下面的代码成功地做到了这一点。但是我的 macbook pro 2018 13' 上 Caps-lock 旁边的 LED 灯停止工作。所以我想用脚本在我的大写锁定上切换 led。
我正在使用 karabiner-elements 将大写锁定重新映射到 f13。当 emacs 记录 f13 时,它会将状态更改为 evil-normal-state 或 evil-insert-state。
问题开始了,当我想在按下 f13 又名大写锁定时向 运行 添加另一个命令。它的 (shell-command "/Users/atrumoram/setleds +caps")
。这会打开大写锁定灯或将其关闭。我试图制作自己的函数 defun
。但我真的不能让它一起工作。最后我想要这样的东西。
这是使用大写锁定
在邪恶中切换 insert/normal 模式的代码 (define-key evil-insert-state-map (kbd "<f13>") 'evil-normal-state)
(define-key evil-normal-state-map (kbd "<f13>") 'evil-insert-state)
最后我想要这样的东西
(define-key evil-insert-state-map (kbd "<f13>") 'evil-normal-state (shell-command "/Users/atrumoram/setleds +caps"))
(define-key evil-normal-state-map (kbd "<f13>") 'evil-insert-state (shell-command "/Users/atrumoram/setleds -caps"))
有什么办法可以帮助我吗?期待您的想法。
一个键一次只能绑定到一个函数,所以为了在您按下该键时发生两件事,您需要创建一个函数,使其成为 "interactive",然后绑定它到你想要的钥匙。
这个函数一个接一个地执行两个动作:
(defun my-evil-normal-state-and-set-caps-led ()
(interactive)
(evil-normal-state)
(shell-command "/Users/atrumoram/setleds +caps"))
因为它被声明为一个 interactive
函数,你可以用 M-x my-evil-normal-state-and-set-caps-led
.
那么就是:
(define-key evil-insert-state-map (kbd "<f13>") 'my-evil-normal-state-and-set-caps-led)
反之切换到插入状态