vim之高效编辑verilog代码(1)

1、前言

 记录与回放命令

这需要三个步骤:
1. "q{register}" 命令启动一次击键记录,结果保存到 {register} 指定的寄存器中。
   寄存器名可以用 a 到 z 中任一个字母表示。
2. 输入你的命令。
3. 键入 q (后面不用跟任何字符) 命令结束记录。
现在,你可以用 "@{register}" 命令执行这个宏。
现在看看你可以怎么用这些命令。假设你有如下文件名列表:
        stdio.h 
        fcntl.h 
        unistd.h 
        stdlib.h 
    而你想把它变成这样:
        #include "stdio.h" 
        #include "fcntl.h" 
        #include "unistd.h" 
        #include "stdlib.h" 
先移动到第一行,接着执行如下命令:
        qa                      启动记录,并使用寄存器 a
        ^                       移到行首
        i#include "<Esc>        在行首输入 #include "
        $                       移到行末
        a"<Esc>                 在行末加上双引号 (")
        j                       移到下一行
        q                       结束记录
现在,你已经完成一次复杂的修改了。你可以通过重复三次 "@a" 完成余下的修改。
"@a" 命令可以通过计数前缀修饰,使操作重复指定的次数。在本例中,你可以输入:
        3@a

2、实例

在verilog编程中,我们经常遇到这样的情况,下面所示。

我们要对adder module实例化100个,那么我们通常的做法就是复制99次,然后对每个进行修改。这样的操作也许你并不讨厌,那么你有没有想过还有更快捷的方式呢。下面我们就用vi的记录与回放命令,来实现这个简单的操作。

 

 首先我们在文件中编辑这样的一段代码:

adder adder0
(
  .rst(rst),
  .clk(clk),

  .a(a0),
  .b(b0),

  .sum(sum0)
);

 

 下面我们就要对这段代码复制49遍,实例化50个。

将光标移动到adder行 

qx                               启动记录,将记录保存在寄存器x中。x可以是a-z的任意一个字母

^                                将光标移动到adder行的第一个非空白字符

<ctrl+v>                      进入visual block模式

jjjjjjjjjjj                        下移11行,移动到);下的空白行

$                                 选中

y                                 复制

jjjjjjjjjjj                       下移11行,复制

/adder\d  <Enter>        寻找adder后为整数的匹配

<ctrl+a>                      adder后面的数字加1

/a\d   <Enter>

/b\d   <Enter>

/sum\d <Enter>  

kkkkkkkkk                   移回到adder的行

q                                记录结束 

 这样的话,这些操作就被保存在了,寄存器x里去了。

下面只要执行49@x,就可以完成你想完成的结果了。


 我还有一个问题目前没有解决,正在继续寻找答案,若是有那么高手敢于分享自己的经验的,不妨分享一下,在这里全体的网友都会感谢你的!

问题描述:

在写verilog的时候我需要有这么几个信号;

hor_halfpel00 <= 0; hor_halfpel01 <= 0; hor_halfpel02 <= 0; hor_halfpel03 <= 0; hor_halfpel04 <= 0;
hor_halfpel10 <= 0; hor_halfpel11 <= 0; hor_halfpel12 <= 0; hor_halfpel13 <= 0; hor_halfpel14 <= 0;
hor_halfpel20 <= 0; hor_halfpel21 <= 0; hor_halfpel22 <= 0; hor_halfpel23 <= 0; hor_halfpel24 <= 0;
hor_halfpel30 <= 0; hor_halfpel31 <= 0; hor_halfpel32 <= 0; hor_halfpel33 <= 0; hor_halfpel34 <= 0;
hor_halfpel40 <= 0; hor_halfpel41 <= 0; hor_halfpel42 <= 0; hor_halfpel43 <= 0; hor_halfpel44 <= 0;
hor_halfpel50 <= 0; hor_halfpel51 <= 0; hor_halfpel52 <= 0; hor_halfpel53 <= 0; hor_halfpel54 <= 0;

 我如何快速的完成他们输入和赋值,谢谢! 

原文地址:https://www.cnblogs.com/liuokay/p/2037303.html