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.vimVim 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 回答