Emacs 如何使用';主页';钥匙

Emacs 如何使用';主页';钥匙,emacs,Emacs,我想按两次“home”键以转到缓冲区的开头。我不能理解正确的语法。以下内容不起作用,我无法用谷歌找到答案 ;; key chords (require 'key-chord) (key-chord-mode 1) ;(setq key-chord-two-keys-delay 0.2) ;(key-chord-define-global "(home)(home)" 'beginning-of-buffer) ;(key-chord-define-global "[(home)(home)]"

我想按两次“home”键以转到缓冲区的开头。我不能理解正确的语法。以下内容不起作用,我无法用谷歌找到答案

;; key chords
(require 'key-chord)
(key-chord-mode 1)
;(setq key-chord-two-keys-delay 0.2)
;(key-chord-define-global "(home)(home)" 'beginning-of-buffer)
;(key-chord-define-global "[(home)(home)]" 'beginning-of-buffer)
;(key-chord-define-global (home)(home) 'beginning-of-buffer)
;(key-chord-define-global [home][home] 'beginning-of-buffer)
更新:我已切换到按键组合软件包,该软件包可用于多个按键,包括主按键。

它是
。要了解emacs如何调用特定键,可以按该键,然后
M-x view lossage

编辑


对不起,一开始误解了你的问题<代码>M-x键和弦定义全局键不接受主键键。因此,我认为目前无法做到这一点。

没有必要为此使用
键和弦。从
.emacs
文件中删除对
键chord define global
的调用,并添加以下行:

(global-unset-key (kbd "<home>"))
(global-set-key (kbd "<home> <home>") 'beginning-of-buffer)
(全局未设置键(kbd“”)
(全局设置键(kbd“”)'缓冲区的开头)
说明


默认情况下,
绑定到
移动行的开头。如果要设置由两次按下
组成的键绑定,首先必须使用
全局未设置键删除默认绑定。然后,您可以将所需的
缓冲区开头绑定添加到全局键映射。

在这种情况下,
键和弦
似乎没有帮助,因为
不在其支持的字符范围内

我相信以下内容可以满足您的需要,同样的模式也可以轻松用于其他不受支持的键1:

(defvar我的双键超时0.25
“等待第二次按键的秒数。”)
我的家()
“在第一次按键时移动到当前行的开头,
如果存在第二个按键笔划,则返回到缓冲区的开头
在“我的双键超时”秒内。“
(互动)
(让((上次调用(获取此命令“我的上次调用时间”))
(如果(和)(eq最后一个命令此命令)
最后一次呼叫

(另一种使用
smartrep.el
的解决方案,其优点是以非黑客方式处理此类问题。当然,缺点是依赖于库。

(需要“smartrep”)
(取消行或缓冲区的开头()
(互动)
(移动行nil的开头)
(运行时间为0.2 nil#键盘退出)
(条件案例错误)
(smartrep读取事件循环
“(“”.缓冲区的开头)))
(零退出)
(全局设置键(kbd“”)#“行起始或缓冲区”)

感谢您的澄清。
查看丢失
很好,但对于检查单个键,我始终建议使用
C-hk
C-hc
。是的,
key chord define global
说:“键可以是字符串或两个元素的向量。目前只能使用与32到126范围内的ascii代码相对应的元素。”我怀疑其意图是
继续移动到当前行的开头,但
将移动到缓冲区的开头。如果这是正确的,那么此解决方案将不会有帮助。这正是我所寻找的。
(require 'smartrep)

(defun beginning-of-line-or-buffer ()
  (interactive)
  (move-beginning-of-line nil)
  (run-at-time 0.2 nil #'keyboard-quit)
  (condition-case err
    (smartrep-read-event-loop
      '(("<home>" . beginning-of-buffer)))
    (quit nil)))

(global-set-key (kbd "<home>") #'beginning-of-line-or-buffer)