2009-06-29 35 views
6

Tüm satırların 'ruby' yazısıyla değil ama 'myruby' yazısıyla olmasını istiyorsam, bu benim yapacağım şeydi.Vim için düzenli ifade açıklaması

:g/\<ruby\>/ 

Soruma burada daha az ve daha büyük olan anlam nedir? Kullandığım tek düzenli ifade, yakutta programlama yaparken.

Benzer üç ardışık boş satırlar bulmak istiyorsanız o zaman bu ben Sorum ben (küme ayracı açılması) ilk küme ayracı kaçan ama ikinci kıvırcık kaçan değilim yüzden

/^\n\{3} 

ne yapacağını olduğunu ayraç (kapanış küme ayracı)?

cevap

13

\< ve \> kelimedir sınırları. Perl, grep ve daha azı (3 OTOH olarak adlandırılır) bunun için \b kullanırsınız, bu yüzden Ruby'de aynı olduğunu hayal ediyorum. senin 2 soru bağlamında

, kaçış tüm ifadenin {3} için gereklidir. Her kaşlı ayraçtan kaçmıyorsun, ama her şeyi bir arada.

daha this question bakınız. İlk düzenli ifade için

0

, ayrıca yapabilirdi:

:g/[^\ ]ruby\/

Bu uzayda önce ve yakut anahtar sonra oldu sağlayacak. regexes tersbölü kaçmak için

+3

ancak bu, satırın başında veya sonunda "ruby" ile eşleşmez. –

+0

@Nathan İyi bir nokta ... – samoz

+0

ve ne 'güzel bir yakut', ne 'bu yakut çaldı, sonra' ... –

16

Vim'ın kurallar tutarlı değildir. Sen \{...} açılış ayracı kaçmak zorunda, ama [...] içinde hiç kaçan gerektirir ve bir yakalama grubunu (açık ve kapalı paren hem kaçan) \(...\) olduğunu. Diğer tutarsızlıklar da var.

Neyse ki Vim, magic ayarları aracılığıyla, normal regex ile bile bu davranışı değiştirmenize izin verir. Bir regex'in başına \v koyarsanız, kaçan kurallar daha tutarlı olur; Sayılar, harfler ve altçizgiler hariç her şey "sihir", bu yüzden bunlardan başka bir karakter eklemek istemediğiniz sürece ters eğik çizgi gerekmez.

İlk örnek daha sonra :g/\v<ruby>/ olur ve İkinci örnek /\v^\n{3} olur. Daha fazla bilgi için bkz. :h /magic ve :h /\v.

+2

Her zaman sihirli moduna sahip olmak için vimrc'inizi 'ayarlayabilirsiniz'. Bu arada, 'sihirli' bir ifadenin \ v tarafından başlatılmadığını ve \ v \ \ v tarafından başlatıldığını düşünüyorum \ v 'sihir yok' anlamına gelir – Oli

+0

Hayır, aslında \ "çok sihir" anlamına gelir. Yani, '0' - '9', 'a' - 'z', 'A' - 'Z' ve '_' dışındaki tüm ASCII karakterlerinin özel bir anlamı vardır, bu yüzden kaçmak zorunda kalmazlar. – binOr