2012-08-10 2 views
5

У меня есть код, написанный на Fortran 77, и я прочитал его с помощью vim. Код написан таким образом, что комментарии находятся в строках, начинающихся с c, как это принято в Fortran 77. Однако vim не распознает их и поэтому использует синтаксис раскраски, который делает код очень трудным для чтения! Как я могу это преодолеть?Синтаксическая подсветка Fortran 77 комментариев не работает в vim

Я видел, что есть post with the same problem. Я прочитал ответы и попробовал различные решения, которые были предложены:

  1. добавить let fortran_have_tabs=1 в .vimrc

  2. добавить

    syn match fortranComment excludenl "^[!c*].*$" [email protected],@spell 
    syn match fortranComment excludenl "!.*$" [email protected],@spell 
    

    в .vimrc

но они не работают для меня. Кто-нибудь знает, почему? Я где-то ошиблась? В противном случае, есть ли у кого-нибудь другое предложение?

+2

Какая версия vim? Он работает, если расширение файла .f? – milancurcic

+1

Является ли это окраской? Или просто комментарии не окрашены? Если вы попробуете комментарий Fortran 90 (!), Это цвет? Я считаю, что vim Fortran, выделяющий рутину, просматривает первые несколько строк файла и определяет, является ли файл фиксированным или нет. Если у вас есть некоторые нестандартные FORTRAN 77 вещи в первых нескольких строках файла, vim может предположить, что файл является свободным форматом, и поэтому «c» не будет считаться комментарием. – SethMMorton

+0

Было бы неплохо увидеть пример кода для тестирования в вопросе. – xaizek

ответ

2

Это то, что работает для меня в моей .vimrc:

let fortran_have_tabs=1 
if has('syntax') && (&t_Co > 2) 
    syntax enable 
endif 

важная часть, скорее всего, syntax enable часть. Вам также может понадобиться следующее:

filetype on 

Также попробуйте ввести в :help ft-fortran-syntax и чтения, что (или смотрите здесь: http://vimdoc.sourceforge.net/htmldoc/syntax.html#ft-fortran-syntax). То, что я отнял от того, что мне нужно, чтобы создать файл ~/.vim/ftplugin/fortran.vim и поместить это в нем:

let s:extfname = expand("%:e") 
if s:extfname ==? "f90" 
    let fortran_free_source=1 
    unlet! fortran_fixed_source 
else 
    let fortran_fixed_source=1 
    unlet! fortran_free_source 
endif 

А также это в вашем .vimrc:

filetype plugin indent on 

Это делает трюк для меня так что я могу без проблем просматривать и редактировать бесплатную форму и фиксированную форму.

Смежные вопросы