vim进阶01: 修改匹配关键字,让编码更高效

科技   2024-09-09 12:00   江苏  
在编写代码过程中,我们有时需要对具有一定规律的代码进行修改,此时采用手动修改,容易出错,效率低;若采用vim替换操作实现能够有效提高工作效率。         

 


1、匹配字符串,进行修改替换
如下所示,假如有50个类似的信号,需要在信号名后面,添加_nc,该如何使用gvim替换操作实现。
举例如下:替换前                        替换后
wire [1:0] ppu_parity ;
wire [1:0] ppu_ecc ;
wire [1:0] ppu_parity_nc ;
wire [1:0] ppu_ecc_nc ;

使用命令:

如果需要替换的信号分布在文件中的各个位置,则使用全局符号 %             
: % s/\(\w\+\)\s*;/\1_nc;/gc
如果需要替换的信号集中在文件中的110行到200行,则使用范围:110,200
: 110,200 s/\(\w\+\)\s*;/\1_nc;/gc         

 

S/aaa/bbb/gc 表示用bbb替换aaa,g表示将一行中出现的所有aaa都用bbb替换
c表示替换前会进行确认,输入y表示替换,输入n表示不替换。        

 

\(xxx\)表示匹配关键词xxx,括号中的内容可以用\1表示,如果匹配选项有两个括号,则依次用\1和\2表示匹配内容。
2、匹配数字,进行运算,使用运算结果替换
如下所示,假如存在大量需要对数字进行有规律修改的情况时,可以用替换操作实现,
1)使用括号()匹配关键字;
2)使用submatch(n)调用数字进行加减,其中n代表第几个匹配括号;
3)使用\=将加减运算结果进行替换;
举例如下:                    
替换前
assign mac_dat0= { data_in [39:32], data_in[47:40], data_in[55:48], data_in[63:56] };
替换后
assign mac_dat0= { data_in [71:64], data_in[79:72], data_in[87:80], data_in[95:88] };
使用命令:
: %  s/ \(\d\d\)/\=(submatch(1)+32)/gc         

 

\(\d\d\)表示匹配2个连续数字, submatch(1) 表示调用第一个括号匹配的字符
使用数字计算结果时,使用\=表示计算结果、

本文内容仅代表作者观点,不代表平台观点。

如有任何异议,欢迎联系我们。

如有侵权,请联系删除。


往期精彩回顾





2021年的第一场雪!英特尔2020年Q4财报解读



利用硬件辅助验证工具加速功能仿真


博文:裸片尺寸和光罩难题——光刻扫描仪吞吐量的成本模型


博文速递:Race condition in digital circuits


IP与SoC设计
《IP 与SoC》依托无锡国家“芯火”平台,全面报道全球IP与SoC设计技术的发展和国内外应用经验,为中国IC设计行业搭建一个IP与SoC资讯交流、产业促进的平台,为中国IC设计行业提供IP与SoC专业知识及相关信息支持和服务。
 最新文章