Emacs'deki bir projede nasıl yeniden düzenleme yapabilirim (yöntem adını her yerde değiştir)


15

Bir açık kaynak projesinin bölümlerini yeniden yazmak istiyorum. Bu, yeniden adlandırma yöntemlerini içerir. Tüm proje boyunca emac'larda bunu nasıl verimli bir şekilde yapabilirim?

Ben her arabellek arama ve değiştirme gibi kesmek kullanmak istemem.


1
Hangi dil?
phils

Ag / grep + wgrep + search / replace'e baktınız mı? Burada ayrı ayrı arabellek açmazsınız. İlgili: emacs.stackexchange.com/a/243/115
Kaushal Modi

Python. Sorumun en iyi olmadığını fark ettim, üzgünüm.
Unfun Cat

Bu soru en üste çıkarıldığı için (herhangi birinin Google'dan tökezlemesi durumunda), yeniden düzenleme için Rope adı verilen özel bir python kütüphanesi vardır. Bağlamı hesaba kattığı için sunulan diğer çözümlerden daha akıllıdır. Emacs olarak adlandırılan bir pakette uygulanır ropemacs.
jcaw

@TheUnfunCat sorunuza daha fazla bağlam ekleyebilir misiniz? Şu andan itibaren oldukça belirsiz ve bunu bir python projesinde yapmak istediğinizi eklemek çok şey temizleyecektir.
DoMiNeLa10

Yanıtlar:


14

Şimdi helm-agişlev adının tüm örneklerini (tüm dosyalarda aramalar, alt dizinler dahil, sadece açık arabelleklerde değil) bulmak için kullanıyorum ve sonra C-c C-etüm eşleşmeleri listeleyen bir arabellek girmek için kullanıyorum ve orada işlev adını değiştiriyorum. İşimi bitirdiğimde C-c C-c (helm-ag--edit-commit), açık olan tüm dosyalardaki değişiklikleri saklamak için düğmesine basarım.

Bu kafa karıştırıcı gelebilir, ancak lütfen https://github.com/ShingoFukuyama/helm-swoop adresine bakın.

Ne zaman grok zaman böyle harika işlevsellik var sevinç gözyaşları ağlayacak.


1
Yanağımdan bir damla koptu.
mihai

1
Bu iş akışını ilk kez gerçekleştirirken kelimenin tam anlamıyla gözlerimde gözyaşları vardı, şaka yapmıyorum
Paul

Harika bir çözüm!
fraxture

6

Dili belirtmediğiniz için “Ara ve Değiştir” den daha iyi yanıtlar vermek zordur.

Wgrep kullanma

Bir sembolün tüm örneklerini (etkileşimli olarak) bir başkasıyla değiştirmek istiyorsanız, wgrep sizin için en iyi seçenektir. Grep sonuçları arabelleğini etkileşimli olarak düzenlemenizi sağlar.

  1. Yap M-x package-install RET wgrep.
  2. Koş M-x rgrep. Size birkaç kolay soru soracak ve daha sonra belirttiğiniz dizinin içindeki arama terimi için özyinelemeli bir arama yapacaktır.
  3. Sonuç arabelleğine geçin ve yapın M-x wgrep-change-to-wgrep-mode. Bu arabellek artık düzenlenebilir. Burada yaptığınız değişiklikler dosyalara yansıtılır.
  4. Yeniden düzenleme işlemini yapmak için bu arabellekte bir replace-regexpveya a çalıştırın query-replace-regexp.
  5. Düzenlemelerinizi M-x wgrep-save-all-buffersve ile bitirin M-x wgrep-finish-edit.


3

Bir arabellekteki tüm adayların bir listesini almak için counsel-rgardından tuşunu kullanabilirsiniz C-c C-o. İle wdüzenlemek için tuşuna basın wgrep. ieditSembol isimleri için tavsiye ederim . İşlem C-c C-cyapmak için basın .

Bağımlılıklar:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.