在 Vim 中重构 C/C++(例如像在 Eclipse 中那样提取方法)

2024-03-19

Vim 中是否有任何插件或内置方法可以对 C 或 C++ 代码进行重构,类似于 Eclipse 中的重构工具?

我特别热衷于 Eclipse 中的提取方法重构工具,它将确定新方法的参数,并且通常还会猜测用作返回值的变量。


不,虽然 Vim 是一个很好的编辑环境,并且可以通过很多方式进行定制(代码折叠、语法着色、宏扩展等),但其中大多数都是在语法级别而不是语义级别上完成的。即使代码折叠也只是匹配相反的大括号。

要进行正确的重构,您必须拥有大量有关 AST 的语义知识、在哪个作用域中声明哪些变量等等。像 Eclipse 这样的 IDE 会建立每个词法作用域中定义的变量的缓存,以便它们可以快速参考它们的使用位置,以确定要重命名的内容和位置。

这并不是说你不能从语法上做某些事情;而是说你不能做一些事情。毕竟,人们可以很容易地取出一段代码并将其放入一个单独的函数中。您甚至可以猜测一些参数(例如,找到变量列表,找出哪些变量具有本地声明,删除它们,剩下的就是您的参数。但是 Eclipse 还可以做其他事情,例如确定是否有任何变量是在函数中修改,并确保它们通过返回值传回。它还检查是否有任何抛出的异常,并将它们添加到列表中。

最终的结果是,虽然您可能能够在 Vim 中近似实现其中的一些功能,但您实际上无法在仅使用 Vim 的环境中使其工作。您可以在 Eclipse 中使用类似 Vim 的键绑定,或者查看eclim http://eclim.org/。从主页:

eclim 的主要目标是 Vim 的 Eclipse 功能 编辑。最初的目标是 提供Eclipse的java功能 在 vim 中,但支持各种其他 语言(c/c++、php、python、ruby、 css、html、xml 等)已添加 还有更多的计划正在计划中。

Eclim 并不是一个应用程序, 更多的是两个伟大的融合 项目。第一个,Vim,可以说是 最好的文本编辑器之一 存在。第二个,日食, 提供了许多很棒的工具 各种语言的开发。每个 提供了许多功能,可以 提高开发人员的生产力,但是 两者都还有待解决 想要的。 Vim 缺乏原生 Java 支持 以及许多高级功能 在 Eclipse 中可用。日食,在 另一方面,仍然需要使用 鼠标可以做很多事情,当 与 Vim 相比,提供了小于 编辑文本的理想界面。

这就是 eclim 发挥作用的地方。 而不是尝试编写 IDE Vim 或 Eclipse、eclim 中的 Vim 编辑器 提供了一个 Eclipse 插件 通过以下方式公开 Eclipse 功能 服务器接口,以及一套Vim 与 Eclipse 通信的插件 通过该接口。

这不仅提供了类似 Eclipse 的环境,is蚀。但您仍然可以获得 vim 的导航和文本编辑功能。听起来这可能适合您的需求,尽管有关的文档重构支持 http://eclim.org/vim/java/refactor.html并不表示它提供了提取方法功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Vim 中重构 C/C++(例如像在 Eclipse 中那样提取方法) 的相关文章

随机推荐