免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7647 | 回复: 23
打印 上一主题 下一主题

关于Vim的文本替换问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-16 22:23 |只看该作者 |倒序浏览
我在使用Vim时编辑文本时,
遇到如: a[0],b[0],...
           a[0],b[0],...
            .
            .
我想把它们改成a[0],b[0],...
                     a[1],b[1],...
                      .
                      .  
就是十多行相同的a[0],b[0],...我想改变括号中数字,让它逐行递增.
请问我该怎么做?
手工的方法,也是我没办法才用的.

谢谢回复我的人.

我用  Ns/\d/\=line(".")-N/gM.
N为从第N行开始,如果放空则为从光标的开始.
M为执行次数.
如:
行号
1
2    a[0],b[0],c[0],...
3    a[0],b[0],c[0],...   
4    a[0],b[0],c[0],...
5     

:2s/\d/\=line(".")-2/g3

我就可以把从第2行开始到第4行改成

行号
2   a[0],b[0],c[0];
3   a[1],b[1],c[1];
4   a[2],b[2],c[2];
5

当然了,如果是

行号
2    a[0],b[0],c[0],...
3   
4    a[0],b[0],c[0],...   
5    a[0],b[0],c[0],...
     
就会变成

行号
2  a[0],b[0],c[0];
3
4  a[2],b[2],c[2];
5  a[3],b[3],c[3];

a里的i=="行号-2"

[ 本帖最后由 gao86 于 2008-12-17 22:31 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-12-16 22:25 |只看该作者
规律?

论坛徽章:
0
3 [报告]
发表于 2008-12-16 22:26 |只看该作者
1,手工替换

2,用正则表达式替换

3,自己写个脚本替换

论坛徽章:
0
4 [报告]
发表于 2008-12-16 22:31 |只看该作者

回复 #2 walkerxk 的帖子

就是十多行相同的a[0],b[0],...我想改变括号中数字,让它逐行递增.

论坛徽章:
0
5 [报告]
发表于 2008-12-16 22:32 |只看该作者

回复 #3 changzi100 的帖子

如果数量太多,手工我觉得太麻烦,
你建议的2,3 两点,能否提示我该怎么做?
谢谢.

论坛徽章:
0
6 [报告]
发表于 2008-12-16 22:35 |只看该作者
你的意思是
原来是:
a[0],b[0],
a[0],b[0],
a[0],b[0],
然后你要替换成
a[0],b[0],
a[1],b[1],
a[2],b[2],

a,b,
这个i和行数有关系么?还是从上面找下来是第几个就是几?

[ 本帖最后由 walkerxk 于 2008-12-16 22:36 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-12-16 22:36 |只看该作者

回复 #6 walkerxk 的帖子

我想从任意行中比如从第3行开始连续的10行a[0],b[0],我要把它改成a[0],b[0],a[1],b[1],...a[9],b[9].

[ 本帖最后由 gao86 于 2008-12-16 23:11 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-12-16 22:43 |只看该作者
%s/^/\=line(".")." "/

论坛徽章:
0
9 [报告]
发表于 2008-12-16 22:43 |只看该作者
%s/\d/\=line(".")-1/

[ 本帖最后由 huwenhuo 于 2008-12-16 22:47 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-12-16 22:53 |只看该作者

回复 #9 huwenhuo 的帖子

你好,谢谢你的回复
用你的方法如果
a[0],b[0],在第一行可以改成a[1],b[0],
                                     a[2],b[0],
                                     a[3],b[0],
但b[0]没有改到.

而a[0],b[0],里a[0]的0是被改成"行号数减去1",如果不是在第一行,如第5行就会被改成a[4],b[0]了.

[ 本帖最后由 gao86 于 2008-12-16 23:06 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP