3

カーソルがアイドル状態になった後に現在の単語の出現を強調表示する小さなvimプラグインに取り組んでいます。ハイライト部分があり、現在の単語が C/C++ キーワードでないかどうかを確認する必要があります。

4

1 に答える 1

5

現在の構文強調表示スクリプトに応じて、それを行うことができます。たとえば、この関数は、カーソルがアクセス修飾子 ( 、など) または C++ タイプ ( など) にある場合にpublic戻りprotectedますbool

function! IsCppAccessOrType()
   return match(synIDattr(synID(line("."), col("."), 1), "name"), '\v\CcppAccess|cppType') >= 0
endfunction

ただし、これも現在の構文スクリプトに完全に依存します。syntax/cpp.vim上記の例は、Vim 7.3 で提供される標準に依存します。


ところで、シンタックス ハイライトを処理するための非常に便利なトリックがあります。

" Show syntax highlighting groups for word under cursor 
nnoremap <silent> <F10> :call <SID>SynStack()<CR>
function! <SID>SynStack()
   if !exists("*synstack")
      return
   endif
   echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc

これを に追加するvimrcと、 を押すF10と、構文項目のスタックがエコーされます (詳細については、 を参照:help synstackしてください)。

このトリックはhttp://vimbits.comのどこかで見つけました。

于 2013-02-22T07:06:43.617 に答える