@ Malababa wgrepgrep / ack / ag sonuçlarını düzenlemek için paket kullanımından bahsetti .
agPaket wgrep-agkullanarak 'taranmış' sonuçları düzenlemek için paketi ve paketleri nasıl kullandığımı ayrıntılı bir şekilde incelemek istiyorum multiple-cursors.
Bu paketlere Melpa'dan erişilebilir. Ayrıca sisteminizde agaka the_silver_searcher olması gerekir.
Bu inceleme, bulunan tüm / seçilen konumlarda tek satır düzenlemeleri yapmanın bir yolunu aradığınız durumlar için geçerlidir ag.
agSisteminize ve yukarıda belirtilen emacs paketlerine yükleyin .
agbelirttiğiniz regex ile eşleşen içeriğe sahip dosyaları aramayı destekler. agProje kökünün neresine boş bir .gitklasör koymak olduğunu söylemenin en basit yolu . Ardından kullanarak aramayı yapın M-x ag-project-regexp.
Ag aramasının sonuç arabelleği varsayılan olarak düzenlenemez. Düzenlenebilir hale getirmek M-x wgrep-change-to-wgrep-modeiçin wgrep-default bağlamayı yapın veya kullanın C-c C-p.
Şimdi, tüm dosyalarınızda 'abcdef' i 'ghijkl' olarak değiştirmeniz gerekirse, 'abcdef' i ararsınız ve ag results buffer bu dizeyi içeren tüm satırları görüntüler. Ardından bu tamponu düzenlenebilir hale getirir ve bu dizeleri manuel olarak değiştirirsiniz ve bu değişiklikler M-x wgrep-finish-edit, varsayılan bağlama işlemini yaparken veya kullanırken gerçek dosya tamponlarına yansıtır C-c C-e. Ayrıca query-replace-regexpbu aramayı değiştirmek için de kullanabilirsiniz .
multiple-cursorsHızlı yeniden düzenleme için kullanmayı tercih ediyorum, böylece birden fazla düzenlememin aynı anda gerçekleştiği yerin gerçek zamanlı geri bildirimini görebiliyorum. Bu ag sonuçları arabelleğinde değiştirmek istediğiniz dizeyi vurgulayın ve arayın M-x mc/mark-all-like-thisve ardından aynı anda birden fazla noktada düzenlenmiş şeyleri gördüğünüzde huşu içinde düzenleyin.
Düzenlemelerden memnun olduğunuzda, yukarıda bahsettiğim gibi, C-c C-egerçek arabelleklerdeki değişiklikleri "yansıtmak" için yapın. Tamponlar henüz kaydedilmedi.
Tüm tamponları kaydetmek için, genellikle bir seferde, emacs varsayılan C-x s !bağlama özelliğini kullanarak yapıyorum .
İşte ekran görüntüleri olan bir örnek kullanım örneği:
Bu tüm örneklerini değiştirilmesi işlemini göstermektedir bind-to-modi-mapetmek bind-to-my-mapskinTenimde ~/.emacs.d/.
Ben aradığınız zaman bind-to-modi-mapbenim emacs kurulum klasöründe, ben 'ag'ged sonucu altında olsun:
Bu arabellek salt okunur.
Sonra M-x wgrep-change-to-wgrep-modevurgularım, bu seçimleri düzenleyerek ve yaptıktan sonra -modi-mapbu seçimin tüm örneklerini seçin , aşağıdaki gibi görünür:
M-x mc/mark-all-like-this-my-map
Mavi vurgu, bastığımda hangi çizgilerin değiştirileceğini gösterir C-c C-e.
Vuruşta C-c C-e, asıl dosyaya yansıyan değişikliği bu ekran görüntüsünde görebilirsiniz:

Sonra değiştirilen tüm dosyaları kullanarak kaydederdim C-x s !.