如何将$作为emacs中特定键盘宏的别名

时间:2014-01-07 18:48:35

标签: emacs key-bindings dot-emacs

假设我在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)。

1 个答案:

答案 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)