我主要使用vim/gvim作为编辑器,并且正在考虑使用lxr(Linux交叉引用)和cscope或ctags的组合来探索内核源代码.但是,我没有使用cscope或ctags,并且想要听到为什么人们可以选择其中一个而不考虑我使用vim作为主编辑器.
我从事C++项目,我在StackOverflow中浏览了Alex Ott的CEDET指南和其他关于标签的线程,但我仍然对Emacs如何与这些不同的标签系统进行交互以促进自动完成,查找定义,源代码导航感到困惑.代码库或doc-strings的预览.
有什么区别(在功能方面如)之间 etags,ebrowse,exuberant ctags,cscope,GNU Global和GTags?在Emacs中使用它们需要做什么?
如果我想使用标签导航/自动完成符号,我是否需要语义/参议员(CEDET)?
语义在这些不同的标记实用程序之上带来了什么?它如何与这些工具接口?
对于我的日常工作,我住在Emacs.完全.我也非常依赖CScope帮助我在代码中找到东西.
通常情况下,我在分割中有2个窗口(Cx 3): alt text http://bitthicket.com/files/emacs-2split.JPG
我使用右侧窗口作为代码缓冲区,使用左侧窗口作为CScope搜索缓冲区.当您执行CScope搜索并选择结果时,它会自动更新右侧窗口以显示结果引用的缓冲区.这一切都很好,除了它导致我在我正在研究的其他缓冲区中失去我的位置.有时这并不重要,因为[Cs u]让我回到原来的位置.
然而,更好的是拥有3个这样的分割窗口(左侧窗口中的[Cx 2]): alt text http://bitthicket.com/files/emacs-3split.jpg
左下窗口包含CScope搜索缓冲区,左上窗口是CScope唯一更新的缓冲区.这样,我可以看到我的CScope搜索并浏览代码而不会丢失我关注的缓冲区.
谁知道我怎么能这样做?
Pre: 我已经在VIM工作了一年了.很多很棒的东西:组合,脚本.每当我在不同的编辑器中编辑某些内容时,如果没有VIM的导航,我会感到迟钝/不舒服.
问题: 最让我困扰的是使用现有工具(ctags,cscope)的源代码导航.通常,ctags找不到变量的声明,cscope而不是ctags查找具有相同变量名的所有定义.与调用树导航相同的疯狂,查找前向声明以及单个类定义等.与Eclipse中的MS Intellisense,Visual Assist甚至源代码导航相比,Exuberant Tags/cscope似乎已被弃用至少10年.
我知道有像ViEMU这样的工具,但它们并没有真正解决问题,因为你失去了很多VIM的功能.
问题: 我想知道是否有一个工具可以更好地解析源代码,或者有一些方法可以将源解析引擎(如Intellisense)集成到VIM中?也许有商业解决方案或有人准备实施一个?
与Visual Assist相比,VIM的所有好处似乎比导航到类定义时浪费的时间更少,而Visual Assist则通过单个Alt-G快捷方式完成.
我使用带有vim的cscope.对多个文件进行大量编辑时,cscope将报告已更改文件的旧行号.如何从vim重建cscope db而不会丢失
谢谢
我试图找到一种方法来转储所有函数名称和它从cscope数据库的路径.有没有办法从cscope CLI做到这一点?
注意:可以下载cscope源代码.
我知道这已经讨论了很多次但是在emacs中有没有很好的c/c ++ intellisense方法?我从来没有能够正确设置cedet.
现在我正在开发一个带有huuge代码库的维护项目,没有适当的智能感知就很难管理.目前我正在使用带有ctags/cscope的vim和用于intellisense的omnicomplete功能,效果很好; 但是我希望能够使用emacs.
有没有人成功使用cscopePython代码?我有VIM 7.2和最新版本的cscope安装,但它没有正确获取我的代码标签(总是关闭几行).我尝试了pycscope脚本,但现代版本不支持它的输出cscope.
有任何想法吗?或者用VIM浏览Python代码的替代方案?(我特别感兴趣的是cscope超出简单标签的额外功能ctags)
有没有替代ctags和cscope与Objective-c支持.这确实与可可开发有关,因此我不可避免地会使用Xcode(可能应该).我只是想知道我的Vim选项是什么.
也许有一些类型的插件系统,如eclim,但对于xcode?
编辑
所以似乎除了更新ctags以支持objective-c之外,我运气不好.有谁知道cscope是否相同?
我正在使用cscope进行带有vim的大型项目,但是没有vim映射(他们因为一些奇怪的原因而冻结了vim).我正在使用vim中的cscope命令,我希望能够在整个代码中找到结构成员的用法.
假设我有这样的事情:
1 typedef struct _s{
2
3 int x;
4 } S;
5
6 int main(){
7
8 int x = 1;
9
10 S my_s;
11
12 my_s.x = 5;
13
14 return my_s.x;
15 }
Run Code Online (Sandbox Code Playgroud)
如果我发出命令'cs fsx',它将返回S的成员变量和本地主变量.有没有办法我只能找到S的成员变量的出现?
cscope ×10
vim ×6
ctags ×3
emacs ×3
cedet ×2
c ×1
editor ×1
gnu-global ×1
intellisense ×1
kernel ×1
objective-c ×1
python ×1
xcode ×1