gpt4 book ai didi

emacs - emacs中的两个键快捷方式,而无需按下第一个键?

转载 作者:行者123 更新时间:2023-12-04 05:20:57 26 4
gpt4 key购买 nike

假设我定义了以下快捷方式
(global-set-key (kbd "C-d C-j") "Hello!")
是否可以配置emacs,以便如果我键入"C-d C-j C-j C-j",我将得到“Hello!Hello!Hello!”。而不是必须键入"C-d C-j C-d C-j C-d C-j"

最佳答案

我认为您无法配置Emacs以便对所有命令都执行此操作。但是,您可以在命令本身中实现此功能。这是对C-x e所做的事情。 这是我刚编写的宏(由GNU Emacs 23.1.1中kmacro-call-macro的标准定义指导),可以轻松地将此功能添加到您自己的命令中:

(defmacro with-easy-repeat (&rest body)
"Execute BODY and repeat while the user presses the last key."
(declare (indent 0))
`(let* ((repeat-key (and (> (length (this-single-command-keys)) 1)
last-input-event))
(repeat-key-str (format-kbd-macro (vector repeat-key) nil)))
,@body
(while repeat-key
(message "(Type %s to repeat)" repeat-key-str)
(let ((event (read-event)))
(clear-this-command-keys t)
(if (equal event repeat-key)
(progn ,@body
(setq last-input-event nil))
(setq repeat-key nil)
(push last-input-event unread-command-events))))))

使用方法如下:
(defun hello-world ()
(interactive)
(with-easy-repeat
(insert "Hello, World!\n")))

(global-set-key (kbd "C-c x y z") 'hello-world)

现在,您可以键入C-c x y z z z来插入 Hello, World! 3次。

关于emacs - emacs中的两个键快捷方式,而无需按下第一个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7560094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com