经典用例:
- 您开始记录宏:
C-x (
- 假设您正在做一些事情
hello
。 - 假设您运行了一个引发错误的命令
C-g
(例如,您错误地运行了该命令,C-s
而您必须使用取消该操作C-g
,那么您的工作将会丢失)。
现在,您到目前为止的录制已丢失。
我想恢复我中断的地方,然后再运行一条命令中断录音。我看着C-h f start-kbd-macro
,但是它是用C编写的,所以我无法对其进行调整。我还current-kbd-macro
搜寻了类似的变量,但到目前为止没有找到。
可以恢复吗?
更新:
我不知道为什么C-u C-x (
对我不起作用,但是我发现这是因为我正在使用进行测试C-g
。
事实证明这C-g
很特别-如果您触发其他类型的错误,例如
C-x ( M-: (signal 'quit nil)
然后,这将停止录制,但last-kbd-macro
将包含"M-: M-( signal 'quit nil"
,但带有
C-x ( C-g
这将停止记录并丢弃任何记录的内容。作为对Cg满意的用户(至少有两个我的朋友),这是一个非常不幸的区别。我尝试编辑keyboard-quit
,但在那里我无能为力。
看来,恢复此错误的唯一方法是通过recent-keys
并自动确定在何处调用了start-kbd-macro(或类似名称),如中所示kmacro-edit-lossage
。