Я написал сценарий Vim для автозавершения программных единиц Fortran, определения типа и т. Д., Взяв кий из плагина vim-latex.Держатели мест, используемые в качестве имени конструкции, компрометируют правильный отступ
На данный момент, если я бью <F5>
, когда курсор находится на слове program
, я получаю следующее
PROGRAM <+program_name+>
USE <+used_module_name+>
IMPLICIT NONE
<++>
END PROGRAM <+program_name+>
с первым <+program_name+>
визуально выбранным и Vim в режиме выбора. И это идеально для меня.
Проблема возникает, когда я использую такой заполнитель как метку для конструкции IF
. Когда я открываю if
я
<+name+>: IF (<+logical expression+>) THEN
<++> ! this line is not indented => in turn the following are negative indented
ELSE IF (<+logical expression+>) THEN
<++>
ELSE
<++>
END IF <+name+>
, где вторая линия не с отступом в связи с тем (по крайней мере, я полагаю!), что строка <+name+>
не является допустимым именем. Как следствие, следующие строки возвращаются назад (очевидно, когда if находится в первом столбце, вторая строка является единственной ошибкой).
Это также происходит для DO
конструкции, но, как ни странно, не бывает для SELECT CASE
конструкции:
<+name+>: SELECT CASE (<+case expression+>)
CASE (<+case selector+>)
<++>
CASE DEFAULT
<++>
END SELECT <+name+>
И вот почему я думаю, что soultion должен существовать и быть не так сложна.
Возможно, было бы лучше рассмотреть один из существующих решений фрагмента, например [UltiSnips] (https://github.com/SirVer/ultisnips). С ним можно использовать коллекцию фрагментов [vim-snippets] (https://github.com/honza/vim-snippets), и у нее есть фрагмент для Fortran. –
Я думаю, что я правильно установил UltiSnips, поскольку ': help UltiSnips' работает, но мне не удалось установить vim-фрагменты. –
Почему, по-вашему, вам не удалось установить 'vim-snippets'? В отличие от других плагинов, 'vim-snippets' - это только данные, которые он« ничего не делает ». –