2021.12.16
写在前面的话
嗨,屏幕前的你还好吗?我是不二鱼,一个不喜欢写技术博客的IC验证工程师。这两天,我被begin...end折磨的没有人样了。我一直在改项目中的scoreboard,你能想象,一千多行的scoreboard中,有多少个begin......end吗?大概就是前面下面这个样子:
第一个begin
省略几百行代码......以及数不清的begin...end
end
end
end
end
end
end
end
end
end
endfunction:xxxxxxxxx
我整个都傻掉了,中间我删了一些内容,因为不适用了,但一直报错,这工具不智能的一点就是,只告诉你有个错,然后就瞎指,一直报endfunction的错误。我大概猜到是begin...end由于我中间删了一些内容,导致没有配对成功,找了很久,而且中间的还有很多begin...end,但最后这些需要一一排查,是谁没有配对成功,真的是“千里之堤溃于蚁穴”,上上下下看,就是找不出。于是,我上网查有没有检查配对的工具,果然,gvim自带了,但是默认不安装(黑人问号)。但是经验帖真是他娘的不完全,藏着掖着,我综合了几篇文档,最后整出来了,特来分享给你们。
首先,我这是liunx环境,windows应该大同小异。这里我们需要两个很重要的文件,matchit.vim和matchit.txt。
1.切到.vim目录下
cd ~/.vim
2. 新建两个文件夹
mkdir doc
mkdir plugin
3.找到那两个重要文件,一般都在usr的macro目录下,输入一下命令,切到macro目录下
cd /usr/share/vim/vim74/macros
4.将matchit.vim复制到plugin文件夹
cp ./macro/matchit.vim ~/.vim/plugin/
5.将matchit.txt复制到doc文件夹
cp ./macro/matchit.vim ~/.vim/plugin/
6.打开.vimrc文件
gvim ~/.vimrc
7.加入下面的语句,都是需要配对的关键词,你还想配什么自己加,注意格式。
let b:match_words =
\ '\<begin\>:\<end\>,' .
\ '\<case\>\|\<casex\>\|\<casez\>:\<endcase\>,' .
\ '\<module\>:\<endmodule\>,' .
\ '\<if\>:\<else if\>:\<else\>,' .
\ '\<function\>:\<endfunction\>,' .
\ '`ifdef\>:`else\>:`endif\>,' .
\ '\<task\>:\<endtask\>,' .
\ '\<program\>:\<endprogram\>,' .
\ '\<specify\>:\<endspecify\>'
8.保存退出之后,打开新的文件,就可以进行匹配了。
问题来了,怎么配对,这里需要用到%,将光标停留在你想要配对的关键字,按%,就可以进行跳转。如停在begin按下%,就会跳到与之配对的end的位置,再按一下%,就可以回到begin的位置。
好了,今天的分享就到这里了,希望对你的学习有一点帮助。持续更新,欢迎关注。觉得有帮助的朋友,希望能够点个赞鼓励一下!!你的每个鼓励都是我持续创作的动力!