2014-01-11 19 views
0

我可以使用emacs或IDE(MS/Mono/sun studio等)重命名结构成员及其所有用法(我的意思是,用 - >或。运营商)在一个文件?比如我有重命名结构成员及其在文件中的所有用法

struct foo { int a_1, int int b_2; //etc } 

我改变结构来是这样的:

struct foo { struct { int a_1, int b_2; } v; //etc } 

而且还有在struct foo源代码或struct foo*类型很多f->a_1f.a_1f->b_2f.b_2,现在我需要替换为编译器在v结构中找到它:f.v->a_1而不是。我怎么能这样做?

Regexp是一个丑陋的解决方案(如果另一个解决方案是手动完成的话,我可以这样做),但不可行,因为它需要与结构类型相匹配。所以,它需要执行知道C类型的文本编辑器/ IDE。如果你不知道如何用emacs做到这一点,但用IDE做请告诉我。

+1

我不是这方面的专家,但是你不能用Emacs替换 - 用'.v.a_1'替换'.v_1 a_1'和'.a_1'替换' - > a_1'' ?听起来像是字符串替换,不是吗? – Drew

+2

也许,这会有帮助:'语义模式','开发 - >导航标签 - >查找标签引用'。搜索您的标签。打开一个Symref缓冲区。在那里你可以重命名标签。 'Symref->展开所有条目','在打开的匹配中重命名符号。 – Tobias

+0

@德鲁:问题是还有其他成员的同名不同类型的结构也将被替换。但不是我想要的,而是一个特定的结构类型 –

回答

1

您可以RTags的Emacs的插件做到这一点:

https://github.com/Andersbakken/rtags/

rtags-rename-symbol(默认绑定:CX R R

免责声明:

我觉得它的工作原理非常好吧,但我有宏重命名和沉重的模板化C++代码的问题(这些可能已经修复编辑在最新版本)。

它还可以一次性跨多个文件重命名符号(如果您正在使用项目,则需要compile_commands.json),因此在测试代码之前隐藏/保存更改 - 以防万一。

+0

我会试试它。谢谢。 –

相关问题