Bja*_*sen 29 c eclipse vim refactoring vim-plugin
Vim中是否有任何插件或内置方法可以对C或C++代码进行重构,比如Eclipse中的重构工具?
我特别热衷于Eclipse中的提取方法重构工具,它将从新方法中确定参数,并且通常还会猜测要用作返回值的变量.
AlB*_*lue 16
不,虽然Vim是一个很好的编辑环境,并且可以通过很多方式进行自定义(代码折叠,语法着色,宏扩展等),但大多数都是在语法级别而不是语义级别上完成的.即使代码折叠也只是匹配相反的括号.
要进行适当的重构,您必须拥有大量关于AST的语义知识,在哪个范围内声明哪些变量,等等.像Eclipse这样的IDE构建了每个词法范围中定义的变量的缓存,以便他们可以快速返回到确定重命名的位置和位置.
这并不是说你不能在句法上做一些事情; 毕竟,人们可以轻松地取出一段代码并将其放入一个单独的函数中.您甚至可以猜测一些参数(例如,查找变量列表,找出哪些变量具有局部声明,删除它们以及剩下的是您的参数.但Eclipse也会做其他事情 - 比如确定是否有任何变量在函数中修改,并确保它们被返回值传回.它还检查任何抛出的异常,并将它们添加到列表中.
实际效果是,虽然你可能能够在Vim中接近其中一些,但你真的无法在仅限Vim的环境中使用它.您可以在Eclipse中使用类似Vim的键绑定,或者查看eclim.从主页:
eclim的主要目标是将Eclipse功能引入Vim编辑器.最初的目标是在vim中提供Eclipse的java功能,但是已经添加了对各种其他语言(c/c ++,php,python,ruby,css,html,xml等)的支持,并计划了其他几种语言.
Eclim不是一个应用程序,而是更多的两个伟大项目的集成.第一个,Vim,可以说是现存最好的文本编辑之一.第二个是Eclipse,它提供了许多用于各种语言开发的优秀工具.每个都提供了许多可以提高开发人员生产力的功能,但两者仍然有待改进.Vim缺乏本机Java支持和Eclipse中提供的许多高级功能.另一方面,Eclipse仍需要使用鼠标进行许多操作,与Vim相比,它提供了一个不太理想的编辑文本界面.
这就是eclim发挥作用的地方.eclim不是试图在Vim中编写IDE,而是在Eclipse中使用Vim编辑器,而是提供了一个Eclipse插件,它通过服务器接口公开Eclipse特性,以及一组通过该接口与Eclipse通信的Vim插件.
这不仅给出了类似Eclipse的环境,它就是 Eclipse.但是你仍然可以获得vim的导航和文本编辑功能.听起来这可能符合您的需求,尽管有关重构支持的文档并未表明它提供了提取方法功能.