很多时候用正则表达式搜索代码反而更加准确,比如C++类定义可用正则表达式“\bclass 类名\s*[:{\n]”来搜索。因此我做了一个vim插件,可以像cscope一样用快捷键搜索光标下单词的函数或类定义,或仅仅是搜索字符串。没有复杂的算法,仅仅是调用grep+正则表达式来搜索。搜索结果有语法高亮,输入编号可自动跳转,同时记录跳转位置方便返回。
截图:
快捷键:
map <C-G> :call GrepMenu()<CR> "菜单
map <C-G>t :call GrepText(expand("<cword>"))<CR> "搜索光标下的字符串
map <C-G>w :call GrepWord(expand("<cword>"))<CR> "搜索光标下的单词
map <C-G>f :call GrepFunction(expand("<cword>"))<CR> "搜索光标下的函数定义
map <C-G>c :call GrepClass(expand("<cword>"))<CR> "搜索光标下的
类定义
map <C-G>b :call GrepBack()<CR> "返回
<C-G>t表示按Ctrl+g,然后按t,其他类似。
下载:https://github.com/zzmfish/vim-scripts/blob/master/grepcode.vim