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