@ Malababa wgrep
grep / ack / ag sonuçlarını düzenlemek için paket kullanımından bahsetti .
ag
Paket wgrep-ag
kullanarak '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 ag
aka 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
.
ag
Sisteminize ve yukarıda belirtilen emacs paketlerine yükleyin .
ag
belirttiğiniz regex ile eşleşen içeriğe sahip dosyaları aramayı destekler. ag
Proje kökünün neresine boş bir .git
klasö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-mode
iç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-regexp
bu aramayı değiştirmek için de kullanabilirsiniz .
multiple-cursors
Hı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-this
ve 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-e
gerç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-map
etmek bind-to-my-map
skinTenimde ~/.emacs.d/
.
Ben aradığınız zaman bind-to-modi-map
benim emacs kurulum klasöründe, ben 'ag'ged sonucu altında olsun:
Bu arabellek salt okunur.
Sonra M-x wgrep-change-to-wgrep-mode
vurgularım, bu seçimleri düzenleyerek ve yaptıktan sonra -modi-map
bu 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 !
.