Как настроить идентификацию vim для грамотного программирования на Haskell?

Когда я включаю autoindent для обычного файла *.hs, после нажатия Enter новая строка получает ожидаемый отступ. Однако это не работает с грамотными файлами Haskell *.lhs, строки кода которых начинаются с > (иначе "птичьи следы"). Курсор всегда находится в первой колонке.

Как я могу настроить vim так, чтобы, когда я нахожусь внутри фрагмента кода в файле *.lhs (и, скажем, с включенным autoindent), нажатие Enter создавало след птицы в новом месте? линия и отступы должным образом?

Обновление: в качестве примера предположим, что

> myfn x | x <= 0     = 0
>        | x == 1     = 1▌

где представляет позицию курсора (надеюсь, у вас не возникнет проблем с просмотром символа Юникода). Если я нажму Enter, я получу

> myfn x | x <= 0     = 0
>        | x == 1     = 1
▌

тогда как я хочу

> myfn x | x <= 0     = 0
>        | x == 1     = 1
>        ▌

person Petr    schedule 02.09.2013    source источник
comment
Пожалуйста, покажите, что у вас есть и что вы хотите для тех из нас, кто недостаточно грамотен, чтобы знать, что такое птичий след.   -  person romainl    schedule 02.09.2013
comment
@romainl Обновлено, с примером.   -  person Petr    schedule 02.09.2013
comment
Сегодня я выучил новое слово в программировании.   -  person romainl    schedule 02.09.2013


Ответы (1)


Это должно быть легко достигнуто с помощью

:set formatoptions+=ro

или :se fo+=ro для краткости.

С r и o в 'formatoptions' Vim пытается вставить комментарий " лидер", включая отступы на новых строках внутри комментария (то есть, отсутствие комментария в грамотном Haskell).

Чтобы сделать этот параметр автоматически, настройте автокоманду в файле vimrc.

autocmd FileType lhaskell setlocal formatoptions+=ro

Совет. Используйте CTRL-U, чтобы удалить автоматически вставленную выноску, если вы не это нужно.

person glts    schedule 02.09.2013
comment
К сожалению, это не работает. Очевидно, блоки кода, начинающиеся с > , не считаются комментариями, поэтому ro к ним не применяется (у меня уже есть эти флаги, у меня есть tcroql). - person Petr; 02.09.2013
comment
@PetrPudlák О, это работает! Убедитесь, что тип файла lhaskell правильно распознан :set ft?. - person glts; 02.09.2013
comment
@PetrPudlák Я полагаю, у вас есть плагин, который мешает работе. В любом случае, вы можете попробовать :set comments+=:> сделать > ведущим комментария. - person glts; 02.09.2013
comment
Вы правы, я попробовал это на другой машине, и это работает. Так что мне придется просмотреть плагины и выяснить, какой из них вызывает проблемы. - person Petr; 02.09.2013
comment
Это было вызвано плагином haskellmode. После удаления работает. - person Petr; 02.09.2013