使用Vim在文本换行中自动继续使用Haskell注释中的前导破折号

时间:2012-05-23 12:07:14

标签: haskell vim comments

我正在使用Vim编辑我的Haskell源文件,并设置了'textwidth'选项以自动换行超长行。所以我的〜/ .vimrc看起来像:

set tw=78

现在,当我写一条超过78个字符的行时,最后一个字会自动转到下一行。这对于在源文件中编写注释非常有用。好的一点是,在注释中,当最后一行太长并自动包装时,前导注释符号会自动插入每行的开头。但这只适用于C风格的评论,但不幸的是不适用于Haskell领先的破折号。

所以,例如在JS文件中

/**
 * This is a very long comment which is longer than 78 chars, yeah really 
 * longer than 78 chars...

很好地包装和

// This is a very long comment which is longer than 78 chars, yeah really 
// longer than 78 chars...

所以现在如果在Haskell评论中发生同样的事情会很好,比如

------------------------------------------------------------------------------
-- | This is a very long module description which is longer than 78 chars,
--   yeah really longer than 78 chars...

有人知道这是否可能以及如何实现?指定了这种行为在哪里?是:set formatexpr或:set formatoptions可以帮助我吗?

提前感谢您的帮助!

=<<约翰内斯

/ edit:顺便说一下我使用的是vim 7.3.x

2 个答案:

答案 0 :(得分:3)

您应该检查formatoptions设置;对我来说,它的值为croqlc表示评论会在下一行继续。见:help 'formatoptions'

:set formatoptions=croql

答案 1 :(得分:2)

我不是vim用户(而haskell-mode emacs通常只是“做正确的事”,优雅地适应某种缩进风格),但以下似乎为我的快速测试工作:

:set comments=:--\ ,sr:{-,m:\ ,ex:-}

这不具体处理-- |,但实际上我从来没有在Haskell中看到像这样的缩进:

-- | Bla Bla
--   continues right under the Bla

将这样的评论缩进是更常见的事情:

-- | Usually a one-line short description.
--
-- Continued like this, with a longer description.

或者,这个变种:

-- | Bla bla slightly longer than one line description
-- bla bla.
--
-- Bla bla additional details.

如果您想要一个长时间运行的文本描述您的声明,您可以将其作为多行注释开始:

{-|
The definition of 'myfunc', Act I, Chapter 1. Bla bla bla bla
bla bla...
-}