Emacs Evil arama ve değiştirme işlevi


5

Emacs denilen bir Vim emülatör modu vardır kötülük . Bu mod, temel olarak bir bölgeyi vurgulamakla ve üzerinde durmakla aynı şeyi yapan bir arama değiştirme işlevine sahiptir. Bu işlev hakkında mükemmel olan şey, komutu çalıştırmadan önce, normal ifadeler kullanan arama değiştirme komutları oluşturmak için mükemmel olan gerçek zamanlı olarak yaptığınız değişikliklerin bir önizlemesini göstermesidir.

Zayıfım ve Vim anahtarlarını kullanmak için kas hafızamı zorlamak istemiyorum. Normal Emacs'ta bu sed benzeri arama ve değiştirme işlevini önizlemeyle almanın bir yolu var mı?

Yanıtlar:


1

Şuna baksana Anzu Bu soru sorulduktan birkaç ay sonra ortaya çıktı. Hem sorgu değiştirme hem de sorgu değiştirme-değiştir-regexp formlarında etkileşimli vurgulama ve metin değiştirme işlemini gerçekleştirebilir.

.Emac'larımda, varsayılan değiştirme işlevlerini eski bir kötü kullanıcı olarak anzu eşdeğerleriyle geçersiz kıldım:

(global-set-key (kbd "M-%") 'anzu-query-replace)
(global-set-key (kbd "C-M-%") 'anzu-query-replace-regexp)

OP'nin sorusuna doğru cevap bu
YuppieNetworking

0

Tam olarak sed gibi değil, ama SANTİMETRE-% için query-replace-regexp aramak için bir regex ve değiştirilecek metni girmenize Arayüz daha çok bilinenlerle aynı M-% veya query-replaceDüz bir metin dizesini arar.

Ara ve değiştir işlevini belirli bir desenle eşleşen çizgilerle sınırlayamazsınız, ancak bunun üzerinde çalışabilirsiniz. Örneğin, sed ifadesi /foo/s/bar/baz/ arayarak öykünebilir \(foo.*\)bar ve ile değiştirme \1baz (varsayarak bar her zaman sonra olur foo ilginç satırların herhangi birinde).


0

Emacs vardır replace-regexp Bu, normal ifadelerle arama yapmanızı ve değiştirmenizi sağlar. Etkileşimli olarak yer değiştirmelerin önizlemesini yapan hiçbir aracın farkında değilim, ancak arama yapmak ve değiştirmek için kullanılan normal ifadeleri etkileşimli olarak oluşturmanıza olanak sağlayan birkaç araç var:

Emacs ile geliyor re-builder. M-x re-builder regexp'inizi oluşturabileceğiniz küçük bir tampon açar. Mevcut tamponunuzdaki tüm eşleşmeleri, her grup benzersiz şekilde renkli olacak şekilde vurgulayacaktır. İşte bu konuda güzel bir özetidir.

O zaman var Yeniden oluşturucu + Bu, oluşturduğunuz regexp ile replace komutunu çağırmanıza olanak tanır. Ancak değiştirme etkileşimli değildir.

Bildiğim son araç regex-aracı bu, metniniz, regex'iniz ve eşleşen gruplarla üç arabellek görünümü verir.

Bu araçlar, Kötülüğün sizin tanımınızla yaptığı her şeyi sağlamıyor, ancak aramanın ve düzenli ifadeyle değiştirmenin en zor kısmını düşündüğümü kapsıyor.

Yalnızca tamponun bulunduğu bir bölgede çalıştırmak istiyorsanız, kullanabilirsiniz. C-x n n seçilen bölgeye daraltmak (işaret ve nokta arasında) veya C-x n p geçerli sayfaya daraltmak için. Ve sonra C-x n w Tamponun sonuna kadar tekrar genişletmek için.

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.