vim: replace komutunda aramadan dize kullan


16

Sık sık /düzenli ifadelerimi doğrulamak için vim arama komutunu kullanıyorum (sadece neyle eşleştiğini görmek için). Bundan sonra genellikle :%sdeğiştirilecek bir dize olarak aramadan bu regexp kullanın, örneğin ilk ben böyle bir dize arayın: replace komutunu kullanın:

/TP-\(\d\{5\}\)-DD-\d\{3\}

Tam olarak istediğimle eşleşiyor, bu yüzden değiştirmem gerekiyor:

:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g

Ama buraya tüm regexp'i tekrar yazmak zorundayım. Genellikle bu normal ifade çok daha uzun, bu yüzden çözüm arıyorum:

Bu arama desenini doğrudan replace komutuna yapıştırmak için varolan herhangi bir kısayol veya vim komut dosyası var mı?

Terminalde vim kullanıyorum (gvim yok).

Yanıtlar:


20

Genel olarak, boş bir normal ifade, önceden girilen normal ifadeyi kullanmak anlamına gelir, bu yüzden :%s//\1/gistediğinizi yapmalısınız.


Woah, bu kadar kolay! Tam olarak ihtiyacım olan şey, teşekkürler.
kars7e

10
Doğrulama işlemi veya son kullanılan desen değiştirmek istiyorsanız Ayrıca, kullanabileceğiniz Kontrol-r daha sonra /içeriğini eklemek için (arama desen kayıt /) (örn hemen sonra kısmen yazılan komut satırında doğrudan :%s/).
Chris Johnsen

bu da çok yararlı bir ipucu. Teşekkürler @Chris! +1
kars7e

"\ 1" ifadesini 23 demek gibi bir numarayla takip etmek istersem ne olur? "\ 123" olarak yorumlanmasını nasıl önleyebilirim?
Champ

@Champ Geri referanslar arttıkça \9, belirsizlik yoktur.
Kusalananda

4

Eski regexes aramalarının yanı sıra Ex komutlarını görmenin ve bunlarda değişiklik yapmanın bir başka iyi yolu, bu komutları normal modda düzenlemektir. Bu Mod'dan kopyala yapıştır da dahil olmak üzere tüm vim güçlerine sahip olacaksınız.

  • Arama: yerine ?/ aramak veya aramak , deneyin q/veyaq?
  • Ex Commands için :denemek yerineq:
  • bu moddan çıkmak için CtrlC

Daha fazla okumak için bakınız :help q:.

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.