Jika saya harus melakukan beberapa refactoring nama variabel, saya menggunakan ag dan multi-kursor .
Tetapi ketika saya harus melakukan beberapa penghapusan / penambahan / pemindahan blok kode, saya menggunakan makro keyboard. Tapi saya perlu beralih ke setiap buffer dan memulai menjalankan makro secara manual.
Apakah ada cara untuk hanya memilih buffer terbuka dari Ibuffer (atau file dari dired) dan menjalankan makro keyboard yang terakhir direkam pada semuanya?
sumber
t
tanda dank
menghapus entri yang ditandai. Selanjutnyag
untuk menyegarkan akan mengembalikan garis yang dihapus.M-{
danM-}
untuk melompat ke item ditandai berikutnya dan sebelumnya di Ibuffer dan dired.Berikut adalah perintah yang membuat mengeksekusi perintah, makro, dan mengevaluasi ekspresi Lisp dalam banyak file menjadi no-brainer. Perhatikan bahwa argumen awalan memungkinkan untuk mengeksekusi makro untuk setiap file sampai terjadi kesalahan. Saya sudah memposting ini di superuser tetapi berfungsi dengan baik sehingga saya pikir orang-orang yang datang ke halaman ini juga dapat menemukannya berguna. Saya suka mengikat ini ke 'E' di dired.
Pembaruan: versi lama fungsi ini hanya mendukung makro. Yang diperbarui lebih sederhana dan lebih kuat, memungkinkan untuk mengeksekusi perintah sewenang-wenang (berdasarkan urutan atau nama kunci) serta ekspresi Lisp. Sekarang juga berhati-hati untuk mencatat kesalahan dalam buffer Pesan .
sumber
Memodifikasi file yang dipilih di
dired
Solusi di bawah ini membutuhkan instalasi
dired+
paket, yang tersedia di Melpa.Pertama-tama, ubah makro keyboard Anda menjadi fungsi elisp. Inilah emacs.SE QnA terkait (Bagaimana cara menyimpan makro keyboard sebagai fungsi Lisp?).
Ini bahkan lebih cepat jika Anda tahu bagaimana Anda ingin memodifikasi semua file menggunakan fungsi elisp secara langsung. Katakanlah Anda ingin menambahkan "- * - mode: org - * -" di awal semua file yang dipilih dalam dired. 1
Dalam hal ini, menjalankan fungsi elisp di bawah ini di setiap file yang dipilih akan bekerja.
Jadi evaluasi saja fungsi di atas untuk saat ini; itu akan digunakan pada langkah selanjutnya di bawah ini.
M-x dired
dan buka direktori yang berisi file-file tempat Anda ingin menjalankan fungsi di atas.m
kunci (terikat kedired-mark
dalamdired
).C-u @
dan pilih nama fungsi yang Anda evaluasi di Langkah 1 (my/set-org-mode
).@
terikatdiredp-do-apply-function
yang didefinisikan dalamdired+.el
.C-x s !
untuk menyimpan semua file yang dimodifikasi dalam sekali jalan.1 : Terinspirasi dari pertanyaan ini di reddit .
sumber