我主要对C++和方法/类名/签名自动更改感兴趣.
在最近的Emacs版本(24)中,Semantic能够做到这一点.
可能激活语义模式M-x semantic-mode RET.
用C-c , g.启动Symref缓冲区.
按C-c C-e打开所有参考.
重命名R.
如果你可以在elisp中编程,你可以看看来自CEDET库的cedet + srecode的组合- 它为这个任务提供所有工具 - 找到函数的调用者,获得签名等等.但你需要自己创建refactory工具,使用这些工具
我做了很多,所以我也在等待其他回复.
我所知道的唯一技巧是非常基本的.在重构代码时,以下是我在Emacs中最好的朋友:
M-x query-replace
这允许您进行全局搜索和替换.当您将方法和常用数据移动到其他类或名称空间时,您将会做到这一点.
C-x 3
这为您提供了一个并排显示两个缓冲区的显示器.然后,您可以继续在其中加载不同的文件,并将光标从一个移动到另一个C-x o
.这是非常基本的东西,但我提到它是因为它使下一个有多强大......
C-x ( (type any amount of stuff and/or emacs commands here) C-x )
这是您在emacs中定义宏的方法.任何时候你发现自己需要反复对一堆代码做同样的事情(而且它对于查询替换来说太复杂了),这是一个救星.如果你陷入困境,你可以点击C-g
停止宏定义,然后撤消(C-_
)直到你回到你开始的地方.调用宏的关键是C-x e
.如果你想多次这样做,你可以先点击Esc
并输入一个数字.例如:Esc 100 C-x e
将尝试调用您的宏100次.
(注意:在Windows上,您可以通过按Esc键或按住Alt键获得"Meta".
对于重构工具和简单正则表达式之间的某处,从Emacs 22开始,您可以在替换文本中嵌入任意elisp表达式,这样您就可以进行非常强大的文本操作.Steve Yegge 不久前写了一篇很好的文章.
有一个新工具使用emacs语义模式框架:
很棒的演示:https://github.com/tuhdo/semantic-refactor/blob/master/srefactor-demos/demos.org
用得到它M-x package-install从MELPA或 https://github.com/tuhdo/semantic-refactor/.
我的一个朋友正在玩xrefactory并说它工作得很好.虽然它并不便宜.