|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
先做一个演示:
在linux(windows下没试过,因为键的映射不同,可能不对)下用vim打开解压后的附件。
把光标移到第一行的任何位置,在normal模式下敲入
"ayy 把第一行的内容读入register a
移动光标到adder那一行,在normal模式下敲入
50@a 把register a的内容重复执行50次
有兴趣了吗?
if (no), goto: 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。seemslike 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! |
-
-
vimtest.zip
250 Bytes, 下载次数: 109
, 下载积分:
资产 -2 信元, 下载支出 2 信元
测试文件
|