Vim脚本:检查当前单词是否是/不是C/C++关键字

Dav*_*yan 3 vim vim-plugin

我正在研究一个小的vim插件,它应该突出显示光标空闲后的当前单词出现次数.我有一个重点部分,我需要检查当前单词是否不是C/C++关键字.

Dmi*_*ank 5

您可以根据当前语法高亮脚本执行此操作.也就是说,如果你的光标在某些访问修饰符(该函数返回public,protected等),或者一些C++类型(比如,bool等):

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

但是,这将完全取决于当前的语法脚本.以上示例取决于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
Run Code Online (Sandbox Code Playgroud)

将此添加到您的vimrc,当您按下时F10,将回显堆栈的语法项(:help synstack有关详细信息,请参阅参考资料).

我在http://vimbits.com上找到了这个技巧.