quickfix和vhdl编译

quickfix和vhdl编译

今天学习了一下网上down的一篇文章,vim使用进阶。作者仍然是一个c编程员,不过内容很不错,基本上各个方面都包括了。

看到里面的“vim使用进阶:剑不高手 – quickflx”这一节,感觉对我实现vhdl的编译有很大的帮助。于是几经尝试,终于算是有所小成了。好吧,下面从头到尾梳理一遍:

所谓 quickfix 模式,它和 Normal 模式、 Insert模式没什么关系,它只是一种加快你开发速度的工作方式。

Quickfix 模式的主要思想是保存一个位置列表,然后提供一系列命令,实现在这个位置列

表中跳转。

想要使用Quickfix,首先得编译文件才行。那么第一步就是如何编译文件了。

如果是c文件,那就比较方便,直接用make命令就可以(我估计),实在不行,各种文章页都有介绍。那么现在怎么设置用modelsim的vcom命令来编译呢?

第一步,还是先设置环境变量吧,将$modelsim\win32加入PATH环境变量,一般安装了modelsim都会默认有这个。

第二步,设置用make来编译vhdl。要实现这个,就必须要改makeprg的值了。

?
1
2
3
"设置编译命令
set makeprg=vcom\ -work\ work\ %

设置好后,就可以使用:make命令直接编译了。

输入:make编译,在下方就会出现编译的信息了,如果文件正确的话,如下所示:

现在我们的编译后输出的信息就被加入到一个临时的文件里,quickfix可以查看这些错误信息:

在 quickfix 模式里经常用到的命令有:

:cc 显示详细错误信息 ( :help :cc )

:cp 跳到上一个错误 ( :help :cp )

:cn 跳到下一个错误 ( :help :cn )

:cl 列出所有错误 ( :help :cl )

执行:cl命令可以看到全部的编译信息:

quickfix和vhdl编译_第1张图片

如果我们的文件出现了错误,出错:

quickfix和vhdl编译_第2张图片

点击回车后,文件立刻就变成空白了:

quickfix和vhdl编译_第3张图片

其原因,不能判断相应的错误。

这就需要我们设置错误识别。

第三步,设置modelsim_vcom的错误识别:

?
1
2
"设置vhdl的错误识别
set errorformat=\*\*\ %tRROR:\ %f(%l):\ %m,\*\*\ %tRROR:\ %m,\*\*\ %tARNING:\ %m,\*\*\ %tOTE:\ %m,%tRROR:\ %f(%l):\ %m,%tARNING\[%*[ 0 - 9 ]\]:\ %f(%l):\ %m,%tRROR:\ %m,%tARNING\[%*[ 0 - 9 ]\]:\ %m

这个设置好后,应该可以识别出错误了,执行:make后,光标自动跳转到第一个错误的行。

用:cl命令可以查看全部错误信息。

用:cope可以在新的分割窗口查看错误信息。双击相应的错误提示,可以跳转到相应的行。

第四步,现在已经实现了用vim直接编译,并查看错误,并且可以直接跳转到相应的行。基本功能可以算是实现了。为了方便使用,再设置个快捷键,将F7设置为编译本文件:

?
1
2
3
"编译一个vhdl文件
nmap <silent> <F7> <Esc>:make<CR>:cw<CR>
其中:cw命令的含义是如果有错误就打开quickfix,没错误就不打开。

另外,建立库还是需要另外设置的,否则第一次编译不会通过。

?
1
2
3
"建立一个库
nmap <F6> <Esc>:!vlib work<CR>
下面将所有的vimrc设置列在下面:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"建立一个库
nmap <F6> <Esc>:!vlib work<CR>
"编译一个vhdl文件
nmap <silent> <F7> <Esc>:make<CR>:cw<CR>
"设置编译命令
set makeprg=vcom\ -work\ work\ %
"设置modelsim_vcom的错误识别
set errorformat=\*\*\ %tRROR:\ %f(%l):\ %m,\*\*\ %tRROR:\ %m,\*\*\ %tARNING:\ %m,\*\*\ %tOTE:\ %m,%tRROR:\ %f(%l):\ %m,%tARNING\[%*[ 0 - 9 ]\]:\ %f(%l):\ %m,%tRROR:\ %m,%tARNING\[%*[ 0 - 9 ]\]:\ %m

其他有用的命令:

:cw 如果有错误列表,则打开 quickfix 窗口 ( :help :cw )

:col 到前一个旧的错误列表 ( :help :col )

:cnew 到后一个较新的错误列表 ( :help :cnew )

:ccl 关闭quickfix窗口

你可能感兴趣的:(quickfix和vhdl编译)