2012-06-04 19 views

cevap

22

, sen seçeneği ignorecase set yok varsayarak:

/\<[A-Z]\+\> 

veya

/\v<[A-Z]+> 

sözcük sınırları ile çevrili uzunluğundan biri daha büyük harflerle oluşan bir dize bulur. İkinci form 'çok sihir' kullanır. Ayrıntılar

için :help magic
+0

+1 gibi benden bir saniye daha hızlı olması için çok basit bir regex olabilir. – eckes

+0

Yanlış bir şey yapıyorum veya ifadeleriniz iyi değil mi? o 'IGNORECASE ayarına bağlı değildir çünkü sorun – sica07

+3

' kullanıyorum ... tüm kelimeler, küçük harf vurgulanır olsun ve çok büyük harfe –

20

en kısa cevap: Eğer eşleşen tüm büyük kelime listesi istiyorsanız /\<\u\+\>

+0

"u" ne anlama geliyor? – sica07

+6

+1, ancak '/ \ v <\u+>' daha kısadır! –

+3

@ sica07 "\ u", [A-Z] gibi büyük harf anlamına gelir. – agudulin

1

(yani diğer bir kelimenin atlayarak ilgilenmiyor), kullanabilirsiniz:

ile
echo filter(split(join(getline(1, '$'), ' '), '\v(\s|[[:punct:]])'), 'v:val =~ "\\v<\\u+>"') 

: mevcut tampon tüm hatlar bir listesini verir

  • getline(1, '$')
  • sözcük benzeri elemanların
  • ve sadece büyük kelimeleri seçer nihayet filter(words, uppercase-condition) bir listesini oluşturmak hatları
  • split(all_text, separators_regex) bu listeyi düzleştirir
  • join(lines, ' ').
+0

Cevabınız için teşekkürler, ama sadece birinden diğerine atlamak istiyorum – sica07

İlgili konular