vim中一些高级替换技巧

发布 2021-04-18 10:09:28 阅读 6231

**: chinaunix博客日期:2009.07.11 14:38(共有0条评论)我要评论。

前几天在实验室一个师姐在写verilog**时问了我一个问题,就是她需要定义一系列变量outputrca_out_data0~rca_out_data15,现在她已经写好outputrca_out_data0,然后复制了15行,她问我怎么把data后面的0一次替换成1~15,我不假思索的说,用脚本呗(我以前coding碰到这种情况都是用perl-ne来做的)。她说不想用脚本,问能不能就用vim就实现,这我倒是没尝试过。这两天腰受伤了,闲在宿舍休息,于是为了解决这个问题,去网上搜了不少资料,经过整理,总结下述4条对于自己来说比较实用的替换技巧,其中第2条、第3条和第4条都可以完美的解决师姐的问题。

过两天去实验室,又可以show一下这么cool的操作,哈哈~~~1.替换变量。

在正规表达式中使用\(和\)符号括起正规表达式,即可在后面使用\1、\2等变量来访问\(和\)中的内容。example:

将data1 data2修改为data2 data1s/\(w\+\s\+\w\+\2\t\1

将doe, john修改为john doe

s/\(w\+\w\+\2 \12.利用函数式替换用法:

s/替换字符串/\=函数式。

说明:函数式可以有多个,返回值可以用字符串连接符。连接起来,如line(".

返回匹配行号(:helpline())submatch(n)可以引用\1、\2的内容,其中submatch(0)引用匹配的整个内容;·函数式也可以是字符串常量,用双引号引起来。函数式也可以是任意表达式,需要用小括号引起来,如(3+2*6);

函数式还可以是寄存器中的内容,通过"@寄存器名"访问,如@a(不需要加引号,但是还是需要用。来连接);example:

要将下列8行的data0依次变成data0~7(前面的数字是行号)double data0;double data0;double data0;double data0;double data0;double data0;

double data0;double data0;

如果安装有perl的话,我以前一般都是借助perl来完成这件事情:

r !perl -n -le "if(s/^(double\s+data)\d;/$1$k;/)p其中%:p表示包含完整路径的文件名。

现在只用vim我们就可以完成这样的事情:

首先将光标移到125行(line(".返回当前匹配行的行号,line("'a")返回mark a的行号ma

%s/^\double\s\+data\)\d\(;submatch(1).(line(".line("'a")+1).submatch(2)/g再或者。

首先将光标移到125行(line("'v7j

%s/^\double\s\+data\)\d\(;submatch(1).(line(".line("'

3.匹配的开始与结束。

zs和\ze可以用于替换操作中指明替换的开始与结束,如上例中可以以更短的操作来实现ma

%s#^double\s\+data\zs\d\ze#\=(line(".line("'a")+1)#g

另外,还可以使用vim表达式来实现上述功能:

let n=0 | g/^double\s\+data\zs\d/s/// |let n+=1

其中·|用来分割不用的命令;

g在匹配后面模式的行中执行指定的ex命令·\zs指明匹配由此开始。

s//对匹配模式进行替换,匹配模式为空,表示以上一次匹配成功的模式,并且指明替换是一个表达式;4.高级递增替换。

把下面几句放到_vimrc

let g:i=0

function! inc(increment)let g:i =g:i + a:incrementreturn g:iendfunction

对于上述问题,可以这样解决:

let i=-1 | s/^ double\s\+data\zs\d\ze/\=inc(1)/

还可以生成数字序列,如生成1~100间隔为5的数字序列let i=0 | a,’b s/^/inc(5)/

normal0

7.8磅02

falsefalsefalse

en-uszh-cnx-none

的一些高级应用

1 快速打开最后编辑的文档。1 选择 工具 菜单中的 宏 菜单项,单击 录制新宏 命令打开 录制宏 对话框 2 在 录制宏 对话框中,在 宏名 输入框中输入 autoexec 点击 确定 3 从菜单中选择 文件 点击最近打开文件列表中显示的第一个文件名 并 停止录制 保存退出。下次再启动word时,...

网上求职的一些技巧

6 若有资格不符的职位,可以主动以 和e mail询问该职位所需求的条件与要求。许多招聘单位会对一些有特长的求职者放宽某些方面的条件,比如,如果你的经验丰富,用人单位可能不会非要坚持一定要本科以上学历。这样求职者就会多一次机会。7 不必要大量邮寄简历。许多求职者不管对方的职位要求如何,大量发送求职邮...

AutoCAD应用的一些技巧

信 息 产 业。科商。应用的一些技巧。鲁宁。四平市经济 学校,吉林四平 摘要 根据长期实践经验,介绍用 软件快速 简便进行绘图的一些技巧及体会。关键词 应用 绘图 技巧。这一美国 公司推出的典 型绘图软件,广泛应用于全世界。多年来,它 直是国内使甩最广泛埽憾熟的计算机辅助绘图及设计软件,尤其在机械 ...