针对多行fortran openmp指令的Vim语法高亮显示

时间:2013-04-15 23:18:40

标签: vim openmp fortran90 vim-syntax-highlighting

我使用现代fortran进行并行编程。我正在使用vim,我真的很烦恼fortran.vim语法文件似乎不像!$ omp或!dir $那样处理编译器指令。这些只是在vim中作为评论呈现,因此它们不会脱颖而出。在c / c ++中,这些编译器指令是使用#pragma&#s;来完成的,所以一切都像预处理器代码而不是注释代码一样突出。所以我想用我的fortran语法进行类似的处理。 这是我想要着色的多行指令的一个例子:

!$omp parallel do reduction(+: sum0) reduction(+: sum1) &
     private( nn, S1, S2, Y1, Y2, rvec0, rvec1, iThreadNum)

到目前为止我所拥有的是一个位于$ HOME / .vim / after / syntax中的新fortran.vim文件。 我已经认识到了这个“!$ omp'在一行的开头并为该行着色并正确地对多行进行着色。我的语法文件包含:

syn region fortranDirective start=/!$omp.*/ end=/[^\&]$/
hi def link fortranDirective PreProc

我的问题是它现在无法处理只有一行的简单情况。即:

!$omp parallel do blah blah
call foobar   <-- this is coloured the same as the line above

我需要在语法文件中使用某种正则规则才能正确匹配单行和续行。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

据我所知,问题是你的开始正则表达式过于贪婪。

这应该有效:

syn region fortranDirective start=/!$omp.\{-}/ end=/[^\&]$/