vim 替换
vim 替换%s 与$s
s用于单行替换;$s可以指定范围进行替换;%S用于全局替换
对于指定范围的替换用$s ,全局的替换尽量用%s,%s 不能指定范围进行替换(即使指定了范围仍然进行全局的替换)
使用举例如下:
vim test.txt
nginx nginx dsd nginx
nginx jksdjk nginx
sdjks nginx nginx
进入末行模式
1)替换光标所在行的第一个nginx为TTT(光标在第一行)
:s/nginx/TTT
TTT nginx dsd nginx
nginx jksdjk nginx
sdjks nginx nginx
2)替换光标所在行的全部nginx为TTT(光标在第一行)
:s/nginx/TTT/g
TTT TTT dsd TTT
nginx jksdjk nginx
sdjks nginx nginx
3)替换光标所在行到末尾行的第一个nginx为TTT(光标在第二行)
:.,$s/nginx/TTT
nginx nginx dsd nginx
TTT jksdjk nginx
sdjks TTT nginx
4)替换光标所在行到末尾行的所有nginx为TTT(光标在第二行)
:.,$s/nginx/TTT/g
nginx nginx dsd nginx
TTT jksdjk TTT
sdjks TTT TTT
等价于::2,$s/nginx/TTT
nginx nginx dsd nginx
TTT jksdjk nginx
sdjks TTT nginx
5)替换所有行的第一个nginx为TTT
:%s/nginx/TTT
TTT nginx dsd nginx
TTT jksdjk nginx
sdjks TTT nginx
6)替换所有行的所有nginx为TTT
:%s/nginx/TTT/g
TTT TTT dsd TTT
TTT jksdjk TTT
sdjks TTT TTT
%s 指定范围替换没有效果,仍然是全局替换:
c语言保存字符串到txt文件
FILE *fp_3d;
fp_3d = fopen("/home/szhang/project/segmentation/github/single_test_mjf/tevs_v2/Debug/654/file_3d.txt","a");
for (long f = 0; f < nbFrames; f++) {
int lane_index[2] = {4,5};
if(tr_out.t_lane_out.b_enable_flag!=0)
{
for(int i = 0; i < 2; i++){
if(tr_out.t_lane_out.at_lane_marker[lane_index[i]].b_virtual != 0 || tr_out.t_lane_out.at_lane_marker[lane_index[i]].b_valid != 1)
{
continue;
}
char s_3d[1000];
sprintf(s_3d, "BANMA_ADAS:id:%lld,lane %d,point %d:x:%.2f,y:%.2f,z:%.2f", f, lane_index[i], 0, \
tr_out.t_lane_out.at_lane_marker[lane_index[i]].shape_points_3d[0].x, tr_out.t_lane_out.at_lane_marker[lane_index[i]].shape_points_3d[0].y, tr_out.t_lane_out.at_lane_marker[lane_index[i]].shape_points_3d[0].z);
printf("%s\n",s_3d);
fprintf(fp_3d,"%s\n",s_3d); //字符串使用%s
}
}
}
fclose(fp_3d);
最后打印出的结果如下: