fortran_free_源代码中断vim中的注释语法着色

fortran_free_源代码中断vim中的注释语法着色,vim,comments,fortran,Vim,Comments,Fortran,我正在读我讨厌的fortran 77代码!为了防止vim在第72行之后对行进行奇怪的着色,我在my.vimrc中的第行语法之前加入了let fortran_free_source=1 但是,执行此操作后,所有以“C”或“C”开头的注释都不会按照注释的颜色进行着色。仅限以“!”开头的评论颜色正确。我应该如何编辑.vimrc文件,以便旧fortran样式的注释正确着色?新答案: 添加到您的.vimrc中,让fortran_拥有_tabs=1,这样应该可以去掉它。唯一的副作用是选项卡不再突出显示 旧答

我正在读我讨厌的fortran 77代码!为了防止vim在第72行之后对行进行奇怪的着色,我在my.vimrc中的第行语法之前加入了let fortran_free_source=1

但是,执行此操作后,所有以“C”或“C”开头的注释都不会按照注释的颜色进行着色。仅限以“!”开头的评论颜色正确。我应该如何编辑.vimrc文件,以便旧fortran样式的注释正确着色?

新答案: 添加到您的.vimrc中,让fortran_拥有_tabs=1,这样应该可以去掉它。唯一的副作用是选项卡不再突出显示

旧答案:

我不知道有什么直接的解决方法,但一个肮脏的黑客会在您的syntax文件夹中复制fortran.vim并删除第332行:

    syn match fortranSerialNumber       excludenl "^.\{73,}$"lc=72
如果在~/.vim/syntax文件夹中将其命名为myfortran.vim,则可以使用set syntax=myfortran。我相信一定有更优雅的方式,但这应该行得通

如果将其保留为fortran.vim,则只加载~/.vim/语法中的文件,而不加载/usr/yourvimdir/

新答案中的文件: 添加到您的.vimrc中,让fortran_拥有_tabs=1,这样应该可以去掉它。唯一的副作用是选项卡不再突出显示

旧答案:

我不知道有什么直接的解决方法,但一个肮脏的黑客会在您的syntax文件夹中复制fortran.vim并删除第332行:

    syn match fortranSerialNumber       excludenl "^.\{73,}$"lc=72
如果在~/.vim/syntax文件夹中将其命名为myfortran.vim,则可以使用set syntax=myfortran。我相信一定有更优雅的方式,但这应该行得通


如果将其保留为fortran.vim,则只加载~/.vim/语法中的文件,而不加载/usr/yourvimdir/

中的文件。您以错误的方式解决了问题。Vim将超过第72列的部分涂上颜色是有原因的,因为这是无效代码,以表明它将被忽略

不管怎样,因为我不知道你描述的是什么颜色,所以我猜它是一个字符串,试试看


并让我们知道结果…

您以错误的方式解决了问题。Vim将超过第72列的部分涂上颜色是有原因的,因为这是无效代码,以表明它将被忽略

不管怎样,因为我不知道你描述的是什么颜色,所以我猜它是一个字符串,试试看


让我们知道结果…

将其放入~/.vimrc/after/syntax/fortran.vim中:

syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup,@spell
syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup,@spell
这将突出显示所有类型的Fortran注释,而不考虑其他突出显示选项,如固定或自由源格式

~/.vimrc/after/syntax/中的任何内容都在解析默认语法突出显示文件后运行。上面的两行在我的fortran.vim副本中,但在if语句中,因此它们并不总是有效


如果要突出显示非标准的d注释行,可以在第一行^[!cd*].*$内添加d。

将其放在~/.vimrc/after/syntax/fortran.vim中:

syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup,@spell
syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup,@spell
这将突出显示所有类型的Fortran注释,而不考虑其他突出显示选项,如固定或自由源格式

~/.vimrc/after/syntax/中的任何内容都在解析默认语法突出显示文件后运行。上面的两行在我的fortran.vim副本中,但在if语句中,因此它们并不总是有效


如果要突出显示非标准的d注释行,可以在第一行^[!cd*].*$内添加d。

我有fortran free source作为编译器的参数,因此它是完全有效的代码。@Laurbert515-是的,但原因是什么?如果它是Fortran77代码,则以固定格式编写,并且Fortran77代码只能以固定格式编写。。。好吧,差不多了,那为什么要把它转换成>=F90代码呢?让它作为F77,让Vim这样对待它。因为我不喜欢被告知我的台词要排多长时间?@Laurbert515-这与语言是一致的。接受它。或者将其作为自由形式使用,然后查看C注释的描述和!议论他们不一样。说真的,我真的不认为72个字符的限制有什么问题,反正我的自由行大小也差不多,足够麻烦了……我真搞不懂你为什么要拍这棵树。你关心我的编程偏好是什么?在fortran 90中,我喜欢的fortran语言没有任何限制,这就是我所习惯的。当我必须在f77中处理其他人的代码时,我希望能够阅读和编写我认为合适的代码。这纯粹是首选项,我完全有权使用它=我有fortran免费源代码作为编译器的参数,因此它是完全有效的代码。@Laurbert515-是的,但原因是什么?如果它是Fortran77代码,则以固定格式编写,并且Fortran77代码只能以固定格式编写。。。好吧,差不多了,那为什么要把它转换成>=F90代码呢?让它作为F77,让Vim这样对待它。因为我不喜欢被告知我的台词要排多长时间?@Laurbert515-这与语言是一致的。接受它。或者将其用作自由形式,然后查看
C注释和!议论他们不一样。说真的,我真的不认为72个字符的限制有什么问题,反正我的自由行大小也差不多,足够麻烦了……我真搞不懂你为什么要拍这棵树。你关心我的编程偏好是什么?在fortran 90中,我喜欢的fortran语言没有任何限制,这就是我所习惯的。当我必须在f77中处理其他人的代码时,我希望能够阅读和编写我认为合适的代码。这是纯粹的偏好,我完全有权这么做=嗨!TransserialNumber Normal的链接。。。在没有黑客的情况下也能达到类似的效果。它仍然会匹配,但不会显示。嗨!TransserialNumber Normal的链接。。。在没有黑客的情况下也能达到类似的效果。它仍然会匹配,但不会显示。