在 Vim 中重构 C/C++(例如方法提取就像在 Eclipse 中一样)
-
20-09-2019 - |
题
Vim 中是否有任何插件或内置方法可以对 C 或 C++ 代码进行重构,类似于 Eclipse 中的重构工具?
我特别热衷于 Eclipse 中的提取方法重构工具,它将确定新方法的参数,并且通常还会猜测用作返回值的变量。
解决方案
没有,虽然Vim的是用于编辑一个良好的环境,并且可以在很多方面(代码折叠,语法着色,宏扩展等)大部分的这些的语法级别上完成的,而不是语义层次进行定制。即使是代码折叠只是相匹配反对括号。
做一个适当的重构,你必须有很多关于AST语义知识,在这种范围内声明的变量是什么,等等。如Eclipse的IDE建立在每个词法作用域定义的变量的高速缓冲存储器,以便它们能够迅速返回参考在那里它们被确定哪些重命名和其中方面使用。
这并不是说你不能做一些事情语法;毕竟,一个可以只拿出一个代码块,放入一个单独的函数很轻松了。你甚至可以在一些参数猜测(如找到变量列表,找出哪些具有本地声明,删除它们,还剩下什么是你的参数,但Eclipse还做其他的东西,比如找出任何变量是否修改功能,并确保他们是通过返回值传递回来。它还检查任何抛出的异常,并将它们添加到列表中。
实际效果是,虽然你可以近似其中的一些在Vim中,你真的不打算能够在一个只有VIM-enviornment得到这个工作。你既可以使用一个Vim样键绑定在Eclipse正确,或看 eclim 。从主页上:
eclim的主要目标是使 Eclipse的功能Vim的 编辑。最初的目标是 提供Eclipse的Java功能 在vim,但由于种种其他支持 语言(C / C ++,PHP,蟒,红宝石, CSS,HTML,XML等)已添加 和几个计划。
Eclim少一个应用程序的和 以上两个伟大的整合 项目。首先,Vim的,可以说是 最好的文本编辑器中的一个 存在。第二个是,Eclipse, 提供了许多伟大的工具 发展各种语言。每 提供了许多功能,可以 提高开发人员的效率,但 双方仍留下遗憾的地方 期望。 Vim的缺乏原生支持Java 和许多先进的功能 在Eclipse中使用。 Eclipse中,在 另一方面,还需要使用 鼠标的很多事情,当 相比Vim的,提供了一个小于 用于编辑文本的理想接口。
这就是eclim用武之地。 而不是试图写一个IDE中 Vim的或在Eclipse中Vim编辑器,eclim 提供了一个Eclipse插件, 通过公开的Eclipse功能 服务器接口,以及一组的Vim 插件,与Eclipse沟通 通过该接口。
这不仅给一个Eclipse样的环境中,它的是的Eclipse。但是,你仍然可以获得VIM的导航和文本编辑功能。这听起来像这可能满足您的需求,虽然rel="noreferrer">重构支持上
其他提示
我已经写了一个通用的重构插件。 C ++是处理的主要语言之一(因为它是我在工作中的主要语言)。方法提取被支持。
对于C ++,该插件能够(感谢CTAGS)推断大多数(但遗憾的是并不总是所有 - 由于C标签......)来提取功能的进出变量。 我仍然需要编写一个小对话框来选择输入/输出变量应如何进行交换(const的参考,右值裁判,复制,指针,元组,结构等)的(顺便说一句,帮助是值得欢迎的图形用户界面是不是我的事^^')的。
在对 vim 进行了全面搜索并针对 C++ 进行了重构之后,这是我想出的最佳解决方案。
- Visual Studio 2013 及更高版本 - 用于 C++ 开发和调试的出色 IDE,但没有足够的重构或 vim
- 安装 vsvim 插件 - 现在,您拥有所有 vim 导航、搜索、字符串替换等功能。(不支持部分高级功能)
- 安装 Resharp C++ - 非常适合以速度为代价的重构。它使它有点笨重,但如果您想推断自动生成方法/变量、重命名本地/全局/方法变量或函数、搜索解决方案中的用法以及更多功能,则非常值得。
这是我发现的 C++ 开发、调试和重构的最佳组合。让我的速度至少提高 3 倍 - 5 倍。希望它也对您有帮助。