2013-09-02 2 views
4

Когда я включаю autoindent для обычного * .hs файла, после нажатия Введите, новая строка отступом, как ожидалось. Однако это не работает с файлами literate Haskell * .lhs, чьи строки кода начинаются с > (AKA «bird-tracks»). Курсор всегда располагается в первом столбце.Как настроить идентификацию vim для грамотного программирования Haskell?

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

Update: Для примера, скажем, у

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

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

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

в то время как я хочу

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

Пожалуйста, покажите, что у вас есть, и что вы хотите, для тех из нас, кто недостаточно грамотен, чтобы знать, что такое птица. – romainl

+1

@romainl Обновлено, с примером. –

+0

Сегодня я узнал новое слово программирования. – romainl

ответ

6

Это должно быть легко достичь с

:set formatoptions+=ro 

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

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

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

autocmd FileType lhaskell setlocal formatoptions+=ro 

Совет: Используйте CTRL-U для удаления лидера автоматического вставлено когда она не нужна.

+0

К сожалению, это не сработает. По-видимому, блоки кода, начинающиеся с '>', не рассматриваются как комментарии, поэтому 'ro' не применяется к ним (у меня уже есть эти флаги, у меня есть' tcroql'). –

+0

@ PetrPudlák О, он работает! Проверьте, правильно ли распознан тип файла 'lhaskell'': set ft? '. – glts

+0

@ PetrPudlák Я предполагаю, что у вас есть плагин, который мешает вещам. Во всяком случае, вы можете попробовать ': установить комментарии + =:>', чтобы сделать '>' лидером комментария. – glts