2011-02-04 15 views
5

/\<mypattern\> numaralı telefonu kullanmalıyım. Ancak bu tire (+ U002d) karakteri için doğru değildir ve /\<-\> her zaman başarısız olur. Ayrıca /\<\%d45\>'u da deniyorum ve bu da başarısız oluyor. nedenini bilen var mı?Vim kelimesinin tümünde arama (tire karakteri)

EDIT2: @bobbogo sözü çizgi olarak 'iskeyword' değil bu yüzden :set isk+=- ve /\<-\> eser ekleyin!

Edit1: Ben sadece alfanümerik karakterler için geçerlidir Vim /\<word\> içinde düşünüyoruz ve noktalama karakterleri (EDIT2 bakınız) için kullanmak gerekir. Sorularımı değiştirmeli ve noktalama karakterini tüm dünyada nasıl arayabileceğimizi sormalıyım. Örneğin, aramamın "a? B" deki soru işaretini ve "??" gibi kalıpları bulmasını istiyorum. ve "abc"? geçerli olmamalı.

cevap

4

\< olmayan bir kelime karakteri ve bir kelime karakteri arasında sıfır genişlikli sınırını maçları regex aramak olabilir. Bir kelime karakteri nedir? isk seçeneği ile belirtilmiştir (:help isk). - yana

sizin isk seçeneğinde değil, daha sonra - bir kelime, böylece \<- olacak asla maç başlatmak asla.

Ne istediğinizi bilmiyorum, ancak /\>-\<hello-word'daki çizgi ile eşleşecektir. OP'in dediği gibi,

+0

Teşekkürler. Şimdi problemimin sebebini biliyorum. '-r' testi-r' veya '-rtest 'veya' test-rtest 'gibi kalıpları aramak istiyorum – Saman

+0

Onu buldum ve soruma ekledim (Edit2) – Saman

+2

Bu eşlemeyi kullanmak için bu eşleştirmeyi kullanıyorum anahtar kelimeler: nornemap t- ': set isk'. (dizin (bölünmüş (& isk, ','), '-') == -1? '+': '-'). '= - : iskeyword ayarla? ''. –

0

hep \byourwordhere\b

+0

Cevabınız için teşekkürler, ama bence Vim'de değil. Vim'de "\\ <" and "\\>" – Saman

+0

'u kullanmalıyız. İşte işte, problem çözüldü :) – Blindy

0

. aramaya çizgi - dahil etmek için sadece yürütün:

:set isk+=- 

Hepsi bu.

Örnek: color-primary mektubu c üzerinde * bastığınızda o tüm değişken adı sadece color için arayacaktır.