全局密钥的怪异行为

时间:2019-01-28 20:09:55

标签: emacs

我有.emacs文件:

(defun poc ()
  (interactive) 
  (insert (char-from-name "DOUBLE LOW-9 QUOTATION MARK"))
  (global-set-key [f12] 'poc))

(defun konc ()
  (interactive) 
  (insert (char-from-name "LEFT DOUBLE QUOTATION MARK"))
  (global-set-key [(shift f12)] 'konc))

输入我得到的F12键

<f12> is undefined

如果我输入M-x poc,则会插入双低9引号。但是从这一刻起,如果我再次输入F12键,引号就会正确插入。 重新启动emacs之后,这种情况会重复。 这段代码有问题吗? emacs版本是26.1

1 个答案:

答案 0 :(得分:1)

您要绑定功能中的键,因此需要首先运行功能。不建议这样做。将键绑定到函数外部,如下所示:

(defun poc ()
  (interactive) 
  (insert (char-from-name "DOUBLE LOW-9 QUOTATION MARK")))
(global-set-key (kbd "<f12>") #'poc)

由于这些操作非常简单(只需插入字符),您实际上甚至不需要功能。

(global-set-key (kbd "<f12>") (string (char-from-name "DOUBLE LOW-9 QUOTATION MARK")))
(global-set-key (kbd "S-<f12>") (string (char-from-name "LEFT DOUBLE QUOTATION MARK")))

或者如果您使用类似utf-8的编码(应该使用),则可以将字符直接放在字符串中。

(global-set-key (kbd "<f12>") "„")
(global-set-key (kbd "S-<f12>") "“")
相关问题