经过笔记(一)中的一番折腾,应该可以在vim中使用or/c的功能了,
这篇文章就介绍下or/c中的重命名的转换方法。
按照目前实践的结果来看,这个重命名(Rename)功能只能在单文件内对变量和函数名重命名(注释部分可选可不选)。
例子如下,
//main.c文件
#include <stdio.h>
#include "fun.h"
extern int a;
int main()
{
a = sizeof(int);
printf("size of int = %d\n",a);
if(add()==-1) {
printf("err: add()\n");
return -1;
}
return 0;
}
//fun.h文件
int a;
int add() {
printf("a = %d \n", a);
int leftOperand;
int rightOperand;
printf("input leftOperand = ");
if(scanf("%d",&leftOperand)!=1) {
printf("err: leftOperand should be a integer\n");
return -1;
}
printf("input rightOperand = ");
if(scanf("%d",&rightOperand)!=1) {
printf("err: rightOperand should be a integer\n");
return -1;
}
printf("leftOperand + rightOperand = %d\n", leftOperand + rightOperand);
return 0;
}
1. 用vim打开main.c文件,光标移动到变量a前方,在命令模式下输入命令:CRefactor rename (这里的命令按tab键可以自动补齐),
2.回车后会提示输入新的变量名,假设我们输入newa作为新变量名。
3.之后会提示是否替换注释里出现的a字符,默认是否(false),
4.然后就会列出如下界面,可以选择相应的预览文件(man.c.preview)进行预览。
5.选中man.c.preview文件得到预览图如下
6.之后输入:CRefactorFinish,输入y(yes)完成对变量a的重命名。
7.最后结果如下
完成以后gcc编译是无法通过的,因为在mian.c中一开始引用了fun.h定义的变量a。现在a改名为newa,而newa在程序中是为定义的,所以在main.c文件中会报出对‘newa’未定义的引用 的错误。
可见这个变量重命名的重构只能在本文件内进行,无法对除本文件以外的定义或引用点进行重命名。
函数的重命名过程同上,只不过中间会有意外。例如以上的函数add()重命名为Add()时在进行第4步时会报下面的错误
如果这里按其他键退出后,那么man.c文件不发生任何改变,但是main.c.preview文件对add()更名为Add()。
但是这时如果使用:CRefactorViewChanges命令又可以回到如下界面
选择main.c.preview后又可以正常对函数重命名
使用:CRefactorFinish结束后发现main.c文件的add()函数成功重命名为Add()
很奇怪,目前也不知道是什么原因。
总结:
如果变量同时出现在了多个文件,对改变量重命名时应该能够同时对这多个文件修改此变量的名字,但是or/c无法做到这一点,很让人困惑。原因要么是我配置有问题,要么就是or/c不支持多文件重命名。