使用 Vim 编译 Oracle Pro*C 文件时,我遇到以下问题:
如果没有问题,则编译结束,但当前打开的文件消失了,屏幕变空(这只发生在 Pro*c 文件中,常规 .c 工作正常),点击CtrlO导航到原始文件。
如果代码有问题,我可以打开 quickfix 窗口,但是当我将自己定位在显示问题位置的行上时,它不会做任何事情。
我对 Vim 还很陌生,所以我不知道如何解决这些问题。
任何建议表示赞赏
如果有帮助,我正在使用 vim 7.3。
使用 Vim 编译 Oracle Pro*C 文件时,我遇到以下问题:
如果没有问题,则编译结束,但当前打开的文件消失了,屏幕变空(这只发生在 Pro*c 文件中,常规 .c 工作正常),点击CtrlO导航到原始文件。
如果代码有问题,我可以打开 quickfix 窗口,但是当我将自己定位在显示问题位置的行上时,它不会做任何事情。
我对 Vim 还很陌生,所以我不知道如何解决这些问题。
任何建议表示赞赏
如果有帮助,我正在使用 vim 7.3。
问题是 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 代码也没有。