最近在看键盘宏相关内容, 发现 <17.4 Executing Macros with Variations> 中有一快捷键 C-u C-x q
, 不清楚其具体效果是什么;
已经尝试使用查找快捷键绑定的方式查询对应的函数, 但是无法查找, 因为 C-h k
后先输入的 C-u
已经绑定了具体的函数, 在继续输入余下部分前就已跳出说明; 在键盘宏定义期间像使用 C-x q
一样使用 C-u C-x q
的结果是: 宏无法被定义; 宏执行期间, 也无法使此快捷键生效;
最近在看键盘宏相关内容, 发现 <17.4 Executing Macros with Variations> 中有一快捷键 C-u C-x q
, 不清楚其具体效果是什么;
已经尝试使用查找快捷键绑定的方式查询对应的函数, 但是无法查找, 因为 C-h k
后先输入的 C-u
已经绑定了具体的函数, 在继续输入余下部分前就已跳出说明; 在键盘宏定义期间像使用 C-x q
一样使用 C-u C-x q
的结果是: 宏无法被定义; 宏执行期间, 也无法使此快捷键生效;
C-x q
即函数 kbd-macro-query
,C-u
即函数参数。不加 C-u
的 C-x q
就是加个确认。加 C-u
时,要了解它的目的和使用,需要先了解 Recursive Edit,比如清楚变量 enable-recursive-minibuffers 和函数 recursive-edit 的作用和使用,这儿有个秒表⏱️ ,执行它之后,你可以做任意操作,过一段时间,执行 C-M-c
exit-recursive-edit
会打印过去的时间:
(defun stop-watch ()
"Start a stop watch, type \\[exit-recursive-edit] to stop it."
(interactive)
(let ((t1 (current-time)))
(message
"%s"
(substitute-command-keys
"Stop watch started, type \\[exit-recursive-edit] to exit the stop watch"))
(recursive-edit)
(message
"%f seconds passed"
(float-time (time-subtract (current-time) t1)))))
Recursive Edit 是在执行一个命令中途执行另一个命令的功能。