我打算创建C ++ IDE Vim 可扩展插件。制作满足我自己需求的产品并不是问题。
这个插件可以用于工作区,项目及其依赖项 这适用于unix like system, gcc 作为c ++编译器。
所以我的问题是IDE需要哪些最重要的东西?请注意这是Vim,几乎所有的几乎都是可能的。
几个问题:
您经常使用其中的项目管理不同的工作区以及它们之间的关系吗?这个过程中最烦人的事情是什么
是否有必要从Makefile重新创建“项目”?
感谢。
创建此插件的原因:
通过一堆插件和自编的插件,我们可以模拟大部分内容。当我们开展一个大型的“不定式”项目时,这是可以的
当我们已经有一个makefile或jam文件时很好。当我们必须创建我们的所有者时很糟糕,主要是通过复制和粘贴现有
所有ctags和cscope相关的东西都必须知道真实项目文件的列表。我们创造了这样的。这< project#get_list_of_files()>许多类似的可能是一个很好的项目api功能,以配合现有和未来的插件。
与现有makefile的合作有助于找出真实项目文件和可执行文件名称的列表。
插件内部有插件系统,可以有不同的项目模板。
以上是我开始工作的一些原因。我想听你的。
答案 0 :(得分:12)
有很多问题。其中大多数已经通过独立的通用插件解决了。
给定同一目录中的一组文件,每个文件可以是项目的唯一文件 - 我总是有一个测试/目录,我托管宠物项目,或者我测试编译器的行为。相反,来自一组目录的文件可以是同一个非常大的项目的一部分。
最后,真正定义项目的是(叶子)“makefile” - 为什么要限制自己制作文件,scons,autotools,ant,(b)jam,aap怎么样?还有BTW,Sun-Makefiles或GNU-Makefiles?
此外,我认为让vim知道当前项目中的确切文件没有任何意义。即便如此,众所周知的project.vim plugin已经完成了这项工作。我个人使用local_vimrc plugin(我正在维护一个,我在SF上看过另外两个人)。有了这个插件,我只需要将一个_vimrc_local.vim文件放在一个目录中,其中定义的内容(:mappings,:functions,variables,:commands,:settings,...)将应用于下面的每个文件。目录 - 我在一个有十几个子组件的大项目上工作,每个组件都在自己的目录中,有自己的makefile(甚至没有名为Makefile,也没有目录的名称)
每当我们想要做一些复杂的事情时(重构例如重命名 - 函数,重命名变量,生成 - 切换 - 来自当前变量 - 这是一个真实的......),我们需要vim来拥有对C ++的理解。大多数现有插件都依赖于ctags。不幸的是,ctags对C ++的理解非常有限 - 我已经编写了few advanced things,但我常常被ctags提供的不良信息所阻止。 cscope并不是更好。最终,我认为我们必须集成一个先进的工具,如elsa / pork / ionk / deshydrata /....
注意:那就是现在,我集中了大部分精力。
我不知道跳转到与当前令牌相关联的doxygen定义有多困难。第一个难点是要了解光标的位置(我猜omnicppcomplete已经在这方面做了很多工作)。第二个困难是要了解doxygen如何从代码中为每个符号生成页面名称。
使用greasemonkey插件在doxygen页面的右侧代码中打开vim应该很简单。
对于那些在linux下运行vim并且使用gdb作为调试器的人,有pyclewn project。不幸的是,它不支持像dbx这样的其他调试器。
- 当我运行或调试我编译的程序时,我想选择弹出一个对话框,询问命令行参数。它应该记住我用于项目的最后20个左右的参数。我不想为此编辑项目属性。
我的BuildToolsWrapper plugin有一个g:BTW_run_parameters
选项(很容易被project / local_vimrc解决方案覆盖)。添加映射以询问使用的参数非常简单。 (见:h inputdialog())
- 使用源控制系统
已经存在几个解决此问题的插件。这与C ++无关,它不能由C ++套件解决。
答案 1 :(得分:9)
答案 2 :(得分:2)
我在IDE中想要的东西,我使用的东西不提供:
当我运行或调试我编译的程序时,我想选择弹出一个对话框,询问命令行参数。它应该记住我用于项目的最后20个左右的参数。我不想要为此编辑项目属性。
可以按项目配置的“工具”菜单
能够为每个可能的命令重新设置键盘映射。
能够以文本形式生成项目配置列表
用于调试器等的智能浮动(非停靠)窗口,仅在我需要时弹出,保持在顶部,然后在不再需要时消失。
内置代码指标分析,以便我获得项目中最复杂功能的列表,并可以单击它们以跳转到代码
内置支持Doxygen或类似功能,因此我可以单击Doxygen文档并直接转到代码。 Sjould还可以从代码反向导航到Doxygen。
毫无疑问,现在有人会说Eclipse可以做到这一点或那样,但对我来说它太慢而且臃肿。
答案 3 :(得分:0)
添加到Neil's answer:
答案 4 :(得分:0)
不确定您是否在Windows上进行开发,但如果您是,我建议您查看Viemu。它是Visual Studio的一个非常好的VIM扩展。我非常喜欢Visual Studio作为IDE(虽然我仍然认为VC6很难被击败),所以VS的Vim扩展对我来说是完美的。我更喜欢在Vim IDE中使用的功能是:
答案 5 :(得分:0)
对我而言,这只取决于必需品
我会说远离定义项目 - 只需将整个文件分支视为“项目”的一部分,并让用户拥有一个设置文件来覆盖该默认值
我在IDE和vim用户之间看到的速度差异的99%是代码查找和导航。您需要能够在源代码树中查找短语(或使用ctags智能查找正确的符号),显示所有匹配,并在两次或三次击键中切换到该文件。
所有其他废话如存储库导航或交互式调试都很好,但还有其他方法可以解决这些问题。我会说甚至放弃交互式调试。只关注什么使IDE成为优秀的编辑器 - 对项目有一个“全局”视图,而不是单个文件。
事实上,是否有任何vim插件已经实现了这个目标?