Perim düzenli ifadelerini vim komut satırında kullanabilir miyim?


27

Vim komut satırında perl düzenli ifadeleri kullanmak istiyorum. Örneğin, geçerli satırdaki kelimeleri büyük harf yapmak için şunu yazabilirsiniz:

:s/(\w+)/\u$1/g

Kimden : perl kalıplarına yardım ... Vim'in regex'leri, yapabilecekleriniz açısından Perl'inkine en çok benziyor. Aralarındaki fark çoğunlukla uhhmm ... ... yani iletişim kurabilmeniz için Çince'nin Yunancaya benzer olduğunu söylemek gibi. Fark, çoğunlukla sadece gösterimdedir. regex şey değildir ama notasyonu! Bir gösterim diğerinden daha az aşina ise, farklılıklar can sıkıcıdır. Bu yüzden insanlar her şeyden önce perl hakkında soru soruyor!
dreftymac

Yanıtlar:


19

Herhangi bir satırı veya satır aralığını vim'deki harici bir komut aracılığıyla! Örneğin, şunları yapabilirsiniz:

:.!perl -pe "s/(\w+)/\u\1/g"

Bu, şu anki satırı bu perl komutundan geçirecek. (Burada :komut satırı moduna geçmek için ve sonraki .satır geçerli satır anlamına gelir; ayrıca bir satır aralığı ya %da tüm dosya için vs. belirleyebilirsiniz.)

Vim'in sübstitüsyon modellerinde kullanmak istiyorsanız, gelecek en yakın şey vim'in "çok büyü" seçeneğini kullanmaktır, \ v, şöyle:

:s/\v(\w+)/\u\1/g

Daha fazla bilgi için bkz. :help patternve :help substitute. "Çok sihir" in perl kalıplarıyla tamamen aynı olduğunu sanmıyorum ama çok yakın. Her neyse, yukarıdaki gibi daha rahatsanız, perl'i her zaman kullanabilirsiniz.


1
Ayrıca, çok sihir ile, şu şekilde yapılmamasına rağmen (özel olarak muamele edildiğini ezberlemek zorunda {değilsiniz: "'0' - '9', 'a' - 'z', 'A' - 'Z' hariç tüm ASCII karakterleri ve '_' özel bir anlama sahip. " Teşekkürler!
Ayrat

10

Hayır, Perl düzenli ifadelerini bu şekilde kullanamazsınız. Perl düzenli ifade bileşenlerinin Vim eşdeğerlerini öğrenmede yardım için, bkz.

:help perl-patterns

Ancak, Perl'i frabjous tarafından açıklandığı gibi harici bir filtre olarak kullanabilirsiniz. Vim'inizle birlikte derlenmişse, Perl arabirimini kullanarak Vim'de Perl komutlarını da çalıştırabilirsiniz +perl. Görmek

:help if_perl.txt

2
+1, :help perl-patternsdaha önce vim'den nefret ettiğim şeyi çözdü
Mark K Cowan

8

Ayrıca kullanabilirsiniz:

/\v"your regex"

yerine:

/"your regex"

Aradığım cevap bu!
alextercete

Ayrıca , .vimrc dosyasına ekleyerek nnoremap / /\vve ekleyerek kendinize yardımcı olabilirsiniz vnoremap / /\v, böylece yazdığınızda /sadece çalışır.
mattmc3


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.