Hãy để tôi xác định một macro bàn phím: Tôi nhập C-x (, sau đó bắt đầu bằng M-<, sau đó nhập M-%vào truy vấn-thay thế một số lần xuất hiện của foo bằng thanh . Trong số 3 lần xuất hiện được tìm thấy, tôi chỉ thay thế 2 lần cuối, sau đó lưu lại C-x C-svà hoàn thành macro kbd với C-x ). Làm tốt!!
Nếu bây giờ tôi chạy macro kbd trên một bộ đệm khác, nó sẽ không hỏi tôi có muốn thay thế foo bằng thanh không , nó sẽ sao chép chính xác các câu trả lời không-có-có trước đó của tôi và thay thế lần xuất hiện thứ 2 và thứ 3! Nó sẽ không yêu cầu lần xuất hiện thứ 4 hoặc thứ 5 (bộ đệm thứ 2 này chứa nhiều foo hơn ) !! Đây không phải là những gì tôi mong đợi khi tôi xác định macro. Tôi muốn nó gọi query-replace
và để tôi trả lời các câu hỏi của nó ...
Bên cạnh câu hỏi: Bạn không thấy điều này sai? [Tôi có thể M-x edit-last-kbd-macro
và xem những gì được ghi lại và hiểu logic của tất cả nhưng tôi vẫn thấy điều này sai.]
Câu hỏi thực tế: Tôi có thể sử dụng cái gì thay vì query-replace
làm cho kbd-macro của tôi hoạt động như mong đợi?
start-kbd-macro-dwim
.
M-%
chính xác và phát lại chính xác. Tôi chưa bao giờ thấy, và sẽ không mong đợi, một macro có các phần tương tác. Có lẽ bạn nên viết một hàm elisp tương tác bình thường vào thời điểm này.