Trường hợp sử dụng cổ điển:
- Bạn bắt đầu ghi một macro:
C-x (
- Bạn làm một số thứ, hãy nói
hello
. - Bạn chạy một lệnh gây ra lỗi, giả sử
C-g
(ví dụ: bạn chạy nhầmC-s
và bạn phải hủy lệnh đóC-g
, bây giờ công việc của bạn bị mất).
Bây giờ ghi âm của bạn cho đến nay bị mất.
Tôi muốn tiếp tục nơi tôi rời đi trước khi tôi chạy một lệnh làm gián đoạn ghi âm của tôi. Tôi nhìn vào C-h f start-kbd-macro
, nhưng nó được viết bằng C, vì vậy tôi không thể điều chỉnh nó. Tôi cũng đã săn lùng một biến như thế current-kbd-macro
, nhưng không tìm thấy cho đến nay.
Nó có thể được phục hồi?
Cập nhật:
Tôi không thể hiểu tại sao tôi C-u C-x (
không làm việc cho tôi, nhưng tôi đã phát hiện ra điều đó bởi vì tôi đang thử nghiệm C-g
.
Hóa ra đó C-g
là điều đặc biệt - nếu bạn kích hoạt một loại lỗi khác, vd
C-x ( M-: (signal 'quit nil)
Sau đó, điều này sẽ dừng ghi âm, nhưng last-kbd-macro
sẽ chứa "M-: M-( signal 'quit nil"
, nhưng với
C-x ( C-g
Điều này dừng ghi và loại bỏ bất cứ điều gì ghi lại. Là một người dùng hạnh phúc Cg (ít nhất là hai người bạn của tôi), đây là một sự khác biệt khá đáng tiếc. Tôi đã thử chỉnh sửa keyboard-quit
, nhưng không có gì tôi có thể làm trong đó.
Có vẻ như cách duy nhất để khôi phục điều này là thông qua recent-keys
và tự động tìm ra nơi bắt đầu một macro-kbd-macro (hoặc tương tự), như trong kmacro-edit-lossage
.