2016-04-11 14 views
1

カーソルの下の単語の構文グループ、またはカーソルの次の単語を取得したいと思います。私の現在のコードは、このいずれかになります。現在の行の次の単語のインデックスを取得

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

我々considereこのPythonコードをした場合:

def foo(self): 
    ^cursor is here 

構文グループがうまく検出された:Statement。私たちは、このように、右の前にカーソルを置く場合は、:

def foo(self): 
^cursor is here 

構文グループが検出されません。 col(".")を使用する代わりにカーソルの下に現在/次の単語の位置を取得する方法はありますか?


EDIT:ちょうど簡単なメモ:私は現在/次単語を見つけるしたいと思います。それは現在のPOS内の単語と一致しない場合

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

答えて

0

は、あなたの言葉で、現在のPOS、または次の単語を一致させるために、次のような状況(C)の上に、私はdoubleの位置を取得する必要があります検索することができます。

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

だから、あなたが望む結果を得るために、次のFUNCを使用することができます。

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 

次のソースでは、%%%dcはに置き換えられ、23col('.')に依存するため、現在のカーソル列と一致します。

関連する問題