vim高效编辑verilog

先做一个演示:

 

^^vjjjjjjjjjjyjjjjjjjjjjjp/adder/d /a/d /b/d /sum/d kkkkkkkkk

adder adder0
(  
    .rst(rst),
    .clk(clk),
    
    .a(a0),
    .b(b0),

    .sum(sum0)
);

 

 

把上面的代码复制到一个文件里。在linux(windows下没试过,因为键的映射不同,可能不对)下用vim打开该文件。

 

把光标移到第一行的任何位置,在normal模式下敲入   

 

"ayy          把第一行的内容读入register a

 

移动光标到adder那一行,在normal模式下敲入

 

50@a       把register a的内容重复执行50次

 

 

 

 

有兴趣了吗?

 

if (no),  dzh.mop.com

 

else

在编写verilog程序时,有大量相似的模块,比如:

 

 

 

adder adder0
(  
    .rst(rst),
    .clk(clk),
    
    .a(a0),
    .b(b0),

    .sum(sum0)
);

adder adder1
(  
    .rst(rst),
    .clk(clk),
    
    .a(a1),
    .b(b1),

    .sum(sum1)
);

。。。

 

假如相似的模块有50个该怎么办?500个呢?(哭去吧:)

 

通常的办法是先写好adder0,然后复制/粘贴/修改,重复49次。这是一个冗长、无趣且易出错的过程。

 

如果你用的是vim,那么通过录制一个简单的宏可以让你的生活变的轻松惬意、充满趣味和成就感,甚至当你在同事前炫耀时还能小小的虚荣一把! :-P

 

简单的说,宏是一串命令的集合,类似批处理的概念。

 

该宏如下

qa^<ctrl-v>jjjjjjjjjjyjjjjjjjjjjjp/adder/d<ctrl-a>/a/d<ctrl-a>/b/d<ctrl-a>/sum/d<ctrl-a>kkkkkkkkkq

前提是先把光标移到adder0的那一行,进入normal模式,就是按几下Esc键。

 

看上去很复杂,是把?

下面逐项解释:

q                  宏开始

a                  宏名

<ctrl-v>       进入块操作模式

jjjjjjjjjj          向下移动到模块结束

y                  复制

jjjjjjjjjjj        向下移动到空白行

p                 粘贴

/adder/d      查找后面带数字的adder,会停在adder0这个word上

<ctrl-a>      就是ctrl和a同时按。这个比较奇妙,它会把adder0变成adder1,具体的说就是+1,3<ctrl-a>就是+3。seems like magic? <ctrl-x>就是-1。有一点不爽的是在win下不能这样,因为<ctrl-a>被映射为全选了,网上有处理这个的方法,基本上就是不加载win的键盘映射。Google一下就可以了。

/a/d

<ctrl-a>

/b/d

<ctrl-a>

/sum/d

<ctrl-a>

kkkkkkkk     回到adder那一行

q                  宏结束

 

其实操作一下就会发现就是一些简单操作的集合。然后在normal模式下敲49@a,魔术就会发生,你要的代码会自动出现在屏幕上。

 

这大概是最初级的用程序写程序吧(programming by programming?),不禁让人浮想联翩,假如机器真的会写程序了世界会是什么样子?我们失业了?被Matrix了?or幸福地生活下去...

 

Enjoy!

 

 

 

你可能感兴趣的:(vim高效编辑verilog)