Vim 中是否有用于对 C 或 C++ 代码进行重构的插件或内置方法,类似于 Eclipse 中的重构工具?
我特别关注 Eclipse 中的提取方法重构工具,它可以从新方法中确定参数,通常还会猜测一个变量作为返回值。
Vim 中是否有用于对 C 或 C++ 代码进行重构的插件或内置方法,类似于 Eclipse 中的重构工具?
我特别关注 Eclipse 中的提取方法重构工具,它可以从新方法中确定参数,通常还会猜测一个变量作为返回值。
要进行适当的重构,你必须对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中可用的许多高级功能。另一方面,与Vim相比,Eclipse仍需要使用鼠标进行许多操作,并且在编辑文本方面提供了不理想的界面。这就是eclim发挥作用的地方。 eclim不是试图在Vim中编写一个IDE或在Eclipse中编写一个Vim编辑器,而是提供了一个Eclipse插件,通过服务器接口公开Eclipse功能,并与Eclipse通信的一组Vim插件。这不仅提供了类似Eclipse的环境,而且就像Eclipse一样。但是您仍然可以获得vim的导航和文本编辑功能。看起来这可能适合您的需求,尽管重构支持的文档并未表明它提供提取方法功能。我写了一个通用的重构插件(refactoring plugin)。C++是主要处理的语言之一(因为它是我在工作中使用的主要语言)。支持方法提取。
对于C ++,该插件能够(由于ctags)推断出被提取函数中大多数(但不总是全部--由于ctags..)进出变量。我仍然需要编写一个小对话框来选择如何交换输入/输出变量(const ref, rvalue ref, copy, pointer, tuples, struct等)(顺便说一句,欢迎帮助GUIs,因为这不是我的强项^^')。
在寻找适用于C++的vim重构工具时,这是我找到的最佳解决方案。
这是我为C++开发、调试和重构找到的最佳组合。至少使我快3倍-5倍。希望对您也有所帮助。