Sangat sering saya perlu melakukan serangkaian langkah yang membutuhkan beberapa kali penekanan tombol. Untuk sesi yang sama langkah-langkah tersebut dapat direkam dalam makro keyboard.
Contohnya adalah menyimpan operasi pencarian / ganti yang sering dilakukan sebagai makro keyboard. Tapi makro itu hilang ketika saya keluar dari emacs.
Bagaimana saya bisa menyimpan makro keyboard saya yang sering digunakan sebagai fungsi Lisp?
Demi kesederhanaan, saya ingin menyimpan tindakan mengganti "abc" dengan "def" sebagai fungsi sehingga saya dapat menggunakannya kembali di seluruh sesi emacs.
sumber
insert-kbd-macro
. Itulah jawaban untuk pertanyaan (dan sisa jawaban ini memberikan bantuan tambahan).insert-kbd-macro
bergantung pada apakah Anda menamainya menggunakankmacro-name-last-macro
(seperti pada jawaban di atas) atauname-last-kbd-macro
.name-last-kbd-macro
format (seperti yang disebutkan oleh @phils di atas) Anda berakhir dengan string, bukan fungsi.fset
Dengan menggunakan simbol, Anda dapat menjalankan makro menggunakan Mx, tetapi tidak menyebutnya dari lisp (commandp
->t
,functionp
->nil
). Anehnya, bahkan menelepon viacall-interactively
tidak berfungsi (walaupun Anda bisa menggunakannyaexecute-kbd-macro
untuk menjalankannya).elmacro sudah disebutkan oleh @ lunaryorn, tetapi sebagai penulis paket ini saya pikir akan lebih baik untuk memberikan contoh.
Jika Anda merekam makro seperti ini:
F3 C-e M-b M-u C-a C-n F4
Kemudian melakukan M-x elmacro-show-last-macro upcase-last-wordmenghasilkan buffer dengan:
sumber
The elmacro paket memungkinkan Anda melihat rekaman makro terakhir sebagai tepat Emacs Lisp dengan M-x elmacro-show-last-macro.
sumber