2016-04-11 18 views
1

İmlecin altında söz diziminin sözdizimi grubunu veya imlecin altındaki bir sonraki kelimeyi almak istiyorum. Benim geçerli kod bu biridir:Geçerli satırdaki sonraki kelimenin dizini alın

let l:syntaxgroup = synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") 

biz considere bu Python kodu ise:

def foo(self): 
    ^cursor is here 

sözdizimi grubu iyi algılanır: Statement. Ancak, imleci şunun gibi önceden yerleştirirsek, imleci şu şekilde yerleştirirsek: sözdizimi grubu algılanmadı. col(".") kullanmak yerine imlecin altındaki/sonraki sözcüğün konumunu almanın bir yolu var mı?


DÜZENLEME: Sadece küçük bir not: Ben şimdiki/sonraki sözcüğü bulmak istiyoruz; o anki pos bir kelimeyi aynı değilse

double x = (double)rand()/RAND_MAX; 
     ^cursor is here 

cevap

0

, sizi tek kelimeyle akım pos veya sonraki kelimeyi eşleştirmek için: aşağıdaki durumda (C), ben double pozisyonunu almalısınız

\v(\w|.{-}\zs\w) 

Yani istediğini elde için aşağıdaki fonksiyonları kullanılabilmektedir: arayabilirsiniz aşağıdaki kaynakta

fun! GetHLName() 
    " Defines the pattern: 
    let l:pattern = printf('\v%%%dc(\w|.{-}\zs\w)', col('.')) 

    " Stores either the column of the cursor, or the column of the next word: 
    let l:col = match(getline('.'), l:pattern) + 1 
     " (+1 because match() returns 0-based index) 

    return synIDattr(synIDtrans(synID(line("."), l:col, 1)), "name") 
endf 

, %%%dcile değiştirilir col('.')'a bağlı olarak, 23: geçerli imleç sütununa eşleşiyor.

İlgili konular