我正在开发一个小型 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://vimbts.com的某个地方发现了这个技巧。
于 2013-02-22T07:06:43.617 回答