浏览 "执行带有变体的键盘宏" 遇到 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-queryC-u 即函数参数。不加 C-uC-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 是在执行一个命令中途执行另一个命令的功能。