我想知道如何在函数名称上轻松点击(或者使用一些简单的快捷方式)并查找其所有被调用者或打开已定义的位置。网络上的大多数网络手册都很难遵循或者没有发生。假设我想点击allocuvm
并查看其定义位置?
uint newstk=allocuvm(pgdir, USERTOP-PGSIZE, USERTOP);
答案 0 :(得分:15)
cscope最小示例
Ingo提到它,这是一个例子。
转到项目的基本目录并运行:
cscope -Rb
这将生成一个cscope.out
文件,其中包含已解析的信息。生成速度相当快,即使对于像Linux内核这样的大型项目也是如此。
打开vim并运行:
:cs add cscope.out
:cs find c my_func
c
是callers
的助记符。其他cscope
提供的查询也是可能的,助记符列在:
help cscope
这会将一个调用者列表添加到quickfix列表中,您可以使用以下命令打开该列表:
:copen
转到您感兴趣的行并按Enter键跳转到那里。
要查找光标下当前功能名称的来电者,请添加到.vimrc
:
function! Csc()
cscope find c <cword>
copen
endfunction
command! Csc call Csc()
并在光标位于函数顶部时输入:Csc<enter>
。
TODO:
建议:我喜欢vim,但设置这种东西对我来说太复杂了。如果项目对您来说足够重要,请尝试让项目在某些&#34; IDE&#34;上运行。如果项目没有跟踪IDE配置文件(这是自动更改污染回购的blob ......),它可能会涉及一些开销,但这对我来说是值得的。对于C / C ++,我最喜欢的是KDevelop 4。
答案 1 :(得分:10)
为此,Vim与 cscope 工具集成;有关详细信息,请参阅:help cscope
。
答案 2 :(得分:0)
vi /。 --- /是vi中的搜索功能,和。将重复相同的命令。
如果它是一个大文件,你也可以使用sed(流编辑器) SED grep可以为您提供行号
阅读手册页