假设我在emacs(24.2)中定义了一个宏,比如说xyz。
我想将快捷方式$与此宏相关联,即每当我输入$时运行宏xyz。 我怎么能这样做?
我尝试了以下所有方法但没有成功:
(global-set-key [$] 'xyz)
(global-set-key ["$"] 'xyz)
(global-set-key [?$] 'xyz)
(global-set-key [s-4] 'xyz)
(global-set-key "$" 'xyz)
(global-set-key (kbd "$") 'xyz)
(最后三个是出血手指,abo-abo和Chris)。
答案 0 :(得分:4)
根据您的评论,现在很清楚您已经定义了一个包含使用密钥$
的宏。如果你这样做,你就不能将宏绑定到$
,因为这会使它递归 - 每次你到达宏中的$
时,你实际上再次调用宏
但是,您可以将要执行的操作定义为elisp函数,然后可以将其绑定到$
。如果我们知道你用宏实际做了什么,我们可能会告诉你如何。
编辑:怎么样:
(global-set-key (kbd "$") #'(lambda () (interactive) (insert " $")))
这应该有用,但是lambdas可能有点令人困惑。对于elisp初学者来说,更清楚的可能是:
(defun my-dollars ()
"Insert a dollar sign with a space in front."
(interactive)
(insert " $"))
(global-set-key (kbd "$") 'my-dollars)