假设我在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提出的。)
发布于 2014-01-07 20:17:50
从您的注释中可以清楚地看到,您已经定义了一个宏,其中包括使用键$。如果这样做,就不能将宏绑定到$,因为这使得它是递归的--每当您到达宏中的$时,实际上就是再次调用宏。
但是,您可以将要执行的操作定义为elisp函数,然后可以将其绑定到$。如果我们知道您实际使用宏做了什么,我们可能会向您展示如何使用宏。
编辑:这个怎么样:
(global-set-key (kbd "$") #'(lambda () (interactive) (insert " $")))这应该是可行的,但是lambdas可能有点令人困惑。对于初学者来说,更清楚的是:
(defun my-dollars ()
"Insert a dollar sign with a space in front."
(interactive)
(insert " $"))
(global-set-key (kbd "$") 'my-dollars)https://stackoverflow.com/questions/20979407
复制相似问题