如何理解vim的代码?
Vim是一个很好的编辑器,我将它用于许多任务 然而,当开始开发一个新的(可能是巨大的)代码库时,我觉得用它来理解代码是如何工作的并不舒服如何理解vim的代码?,vim,code-analysis,Vim,Code Analysis,Vim是一个很好的编辑器,我将它用于许多任务 然而,当开始开发一个新的(可能是巨大的)代码库时,我觉得用它来理解代码是如何工作的并不舒服 例如,如果我想知道C++函数在哪里,我可以在每个代码< ***/*.CPP< /C>文件和:COpen/ QueFixt窗口中,对每个事件中的函数进行跳转:那根绳子的长度 如果我用Eclipse(C++的调用层次结构)来做同样的事情,那将不仅仅是一个字符串,而是一个在对象中定义的C++方法,所以我将得到一个函数的用法的精确指示(而不是一个在另一个类中定义的名字
例如,如果我想知道C++函数在哪里,我可以在每个代码< ***/*.CPP< /C>文件和<代码>:COpen/<代码> QueFixt窗口中,对每个事件中的函数进行跳转:那根绳子的长度
如果我用Eclipse(C++的调用层次结构)来做同样的事情,那将不仅仅是一个字符串,而是一个在对象中定义的C++方法,所以我将得到一个函数的用法的精确指示(而不是一个在另一个类中定义的名字相同的函数)。 所以问题是,如何使vim成为分析代码的强大工具
子问题:- 有没有专门为此设计的vim插件
- 使用vim只分析代码有意义吗?也许外部工具(例如:)可以完成这项工作
标记文件和/或一个cscope.out
数据库,Vim有一系列命令可用于“跳转到定义”、“跳转到使用”等::ts[elect]foo
,
覆盖函数名等…您可以在:h ctags
和:h cscope
中找到所需的所有信息
如果你好奇,还有另一种选择。cscope
的另一个优点是它有自己的TUI,可以在shell中使用
据我所知,唯一提供cscope
(++ctags
)接口的插件似乎仅限于C
有很多面向ctags
的插件,比如或者您可以尝试,但是请注意,虽然ctags
仅限于定义,cscope
也可以进行使用和调用
您应该记住,这些工具是代码索引器:您不应该期望它们“理解”您的代码,甚至远不如IDE工具精确。然而,我喜欢Vim,我建议您使用比文本编辑器更适合该任务的工具。当我从Netbeans切换到Vim时,我和您的感觉一样。我错过了Netbeans特性,右键单击就可以看到任何函数定义。免责声明:我主要使用Ruby、Javascript,有时使用PHP
我试过CTAG,但发现它不太准确,也不太干净。我还尝试了插件Tagbar和Taglist与CTAG一起使用。在我看来,Tagbar有点重,在处理标记时会占用大量CPU和内存。标记列表更好,但最好的用例是浏览长文件而不是标记
最后我放弃了使用CTAG
后来我发现有更好的语言解决方案。例如,对于Ruby,有一个插件可以显示已安装gems(libs)中任何函数的ri doc,只需一个键
但我仍然不经常使用,因为我的习惯已经改变了。我喜欢精简,在正确的地方,快速
现在我感到很舒服:
将tmux与Vim一起使用。需要时在控制台中检查文档并验证代码
使用snippet插件(Neosnippet)存储常用的代码、方法。Vim中的代码片段管理比我见过的任何IDE都要好得多,也更灵活
使用大脑储存更多信息,减少鼠标触摸
希望这些帮助。有一个名为fly.vim的插件,非常适合浏览源代码。它利用了cscope数据库并提供了简单的导航机制。将其与autotags插件结合使用,autotags插件可在中心位置为项目生成和维护cscope和CTAG,您可以轻松地在不同的代码库之间切换。
我使用Source Insight浏览Linux内核源代码,当我切换到这个组合时,我没有什么好抱怨的。不过,可能需要一些时间和/或努力才能加快此设置。如果您知道CTAG和cscope是如何工作的,那么,您可能会在不到一个小时内学会它。但其优点是:cscope索引代码速度快,vim使用cscope fast,fly.vim通过cscope查询并以可用格式快速显示。此外,它还保持跳转历史记录