1

使用 Vim 编译 Oracle Pro*C 文件时,我遇到以下问题:

  1. 如果没有问题,则编译结束,但当前打开的文件消失了,屏幕变空(这只发生在 Pro*c 文件中,常规 .c 工作正常),点击CtrlO导航到原始文件。

  2. 如果代码有问题,我可以打开 quickfix 窗口,但是当我将自己定位在显示问题位置的行上时,它不会做任何事情。

我对 Vim 还很陌生,所以我不知道如何解决这些问题。

任何建议表示赞赏

如果有帮助,我正在使用 vim 7.3。

4

1 回答 1

0

问题是 Vim 将文件关联*.pc到另一种文件格式(默认情况下),并且没有提供errorformat适合 Oracle Pro*C 巴洛克式警告/错误消息样式的模式(至少在使用 Vim 7.2 或 7.4 时)。

(您的第一个问题是默认errorformat匹配 Pro*C 启动消息的结果,第二个问题是因为默认errorformat模式不匹配任何 Pro*C 警告/错误消息。)

errorformat我对 Pro*C 文件使用以下附加模式:

"append patterns for Pro*C multi line error message:
set efm+=%ESyntax\ error\ at\ line\ %l\\,\ column\ %c\\,\ file\ %f:,%ESemantic\ error\ at\ line\ %l\\,\ column\ %c\\,\ file\ %f:,%EError\ at\ line\ %l\\,\ column\ %c\ in\ file\ %f,%ZPCC%[A-Z0-9-]%#\\,\ %m,%C%.%#

"prepend ignoring string to ignore Pro*C startup message
set efm^=%-GPro*C/C++:\ Release%.%#

您可以将这些行添加到您的~/.vimrc.

要解决文件类型检测的相关问题,您可以配置正确的文件类型:

$ cd ~/.vim
$ mkdir ftdetect
$ cd ftdetect
$ cat > pc.vim
au BufRead,BufNewFile *.pc  set filetype=esqlc

但是,对于缩进来说,这还不够。

假设像

filetype plugin indent on

~/.vimrc你可以显式配置 C 缩进规则:

$ cd ~/.vim
$ mkdir indent
$ cd indent
$ cp /usr/share/vim/vim72/indent/c.vim esqlc.vim

没有它,我在文件中根本没有任何缩进.pc——甚至 C 代码也没有。

于 2013-09-13T19:10:59.347 回答