如何为有文化的Haskell编程设置vim的标识?

Pet*_*lák 5 vim haskell indentation literate-programming auto-indent

当我打开autoindent常规的*.hs文件时,按下后输入新行按预期缩进.但是,这不适用于代码行以(AKA"bird-tracks")开头的文字Haskell*.lhs文件>.光标始终位于第一列.

我如何设置vim,以便当我在*.lhs文件中的一段代码中(并且让它们autoindent开启)时,按Enter键会在新行创建一个鸟类轨道并适当缩进?

更新:举个例子,让我们说有

> myfn x | x <= 0     = 0
>        | x == 1     = 1?
Run Code Online (Sandbox Code Playgroud)

where ?表示光标的位置(我希望你看到unicode字符没有问题.)如果按Enter键,我最终会

> myfn x | x <= 0     = 0
>        | x == 1     = 1
?
Run Code Online (Sandbox Code Playgroud)

而我想要

> myfn x | x <= 0     = 0
>        | x == 1     = 1
>        ?
Run Code Online (Sandbox Code Playgroud)

glt*_*lts 7

这应该很容易实现

:set formatoptions+=ro
Run Code Online (Sandbox Code Playgroud)

:se fo+=ro简称.

随着ro'formatoptions',Vim尝试在注释内的新行上插入注释"leader",包括缩进(即,在文字Haskell中的非注释).

要自动进行此设置,请在vimrc中设置自动命令.

autocmd FileType lhaskell setlocal formatoptions+=ro
Run Code Online (Sandbox Code Playgroud)

提示:用于CTRL-U在不需要时删除自动插入的引导程序.