Saya ingin menulis ulang bagian dari proyek opensource. Ini termasuk metode penggantian nama. Bagaimana saya bisa melakukan itu secara efisien di emacs di seluruh proyek?
Saya lebih suka tidak menggunakan peretasan seperti pencarian dan ganti di setiap buffer.
refactoring
Kucing Unfun
sumber
sumber
ropemacs
.Jawaban:
Sekarang saya gunakan
helm-ag
untuk menemukan semua instance dari nama fungsi (mencari di semua file, termasuk subdir, tidak hanya di buffer terbuka), dan kemudian saya gunakanC-c C-e
untuk memasukkan buffer yang mencantumkan semua pertandingan dan di sana saya mengubah nama fungsi. Ketika saya selesai saya menekanC-c C-c (helm-ag--edit-commit)
untuk menyimpan perubahan ke semua file yang dibuka.Ini mungkin terdengar membingungkan tetapi silakan lihat https://github.com/ShingoFukuyama/helm-swoop
Ketika Anda mengocoknya, Anda akan menangis karena kegembiraan bahwa fungsi yang begitu bagus itu ada.
sumber
Karena Anda tidak menentukan bahasanya, sulit untuk memberikan jawaban yang lebih baik daripada "Cari dan Ganti".
Menggunakan wgrep
Jika Anda hanya ingin (secara interaktif) mengganti semua instance dari simbol dengan yang lain, wgrep adalah taruhan terbaik Anda. Ini memungkinkan Anda mengedit buffer hasil grep secara interaktif.
M-x package-install RET wgrep
.M-x rgrep
. Ini akan menanyakan beberapa pertanyaan mudah dan kemudian melakukan pencarian berulang untuk istilah pencarian di dalam direktori yang Anda spefisikan.M-x wgrep-change-to-wgrep-mode
. Buffer ini sekarang dapat diedit. Setiap perubahan yang Anda lakukan di sini akan tercermin dalam file itu sendiri.replace-regexp
atau aquery-replace-regexp
di buffer ini, untuk melakukan refactoring.M-x wgrep-save-all-buffers
danM-x wgrep-finish-edit
.sumber
Untuk beberapa pendekatan umum, lihat di bawah judul " Replace Across Files " pada halaman pencarian & ganti Emacs Wiki: http://www.emacswiki.org/emacs/CategorySearchAndReplace
Lihat juga jawaban untuk: Menggunakan Emacs untuk menemukan dan mengganti file teks yang belum dibuka secara rekursif .
sumber
Anda dapat menggunakan
counsel-rg
diikuti oleh C-c C-ountuk mendapatkan daftar semua kandidat di buffer. Tekan wuntuk mengeditnyawgrep
. Saya merekomendasikaniedit
untuk mengganti nama simbol. Tekan C-c C-cuntuk komit.Ketergantungan:
counsel
,wgrep
,iedit
Berada di MELPAsumber