There is no such thing as a one-ring-to-rule-them-all Haskell mode for Vim, but syntax highlighting comes as standard, and most Vimmers have their own collection of Vim script plugins, to activate and enhance at least some of Vim's multitude of source code editing functionality. This page is about my own versions, you can find other efforts in haskell.org's Vim corner.
If you've not used these haskellmode plugins before, or haven't used Vim at all, you might find this short series of screencasts interesting. It offers a quick tour of the features available when editing Haskell code with Vim, haskellmode for Vim, not to mention other Vim plugins. Don't forget to visit vim.org for more scripts, tips, and full online version of Vim's built-in help.
Let me know if it works for you, these plugins keep evolving whenever I run into a persistent issue that I'd like them to help me with, and I sometimes introduce bugs!-) Things should work on all ghc/vim platforms; there are not always useful defaults for all platforms, and sometimes the Haddock docs are not installed by default, so you might have to do some configuring, but I try to fix bugs as they are reported (feature suggestions are also welcome, but may take a while;-). Please use the email listed in the plugin files, as well as our new issue tracker (actually, now that I can keep trac of bugs, I don't need to fix them any more, right?-).
use the vimball archive (vimball is a standard plugin, and straightforward to use; just see :help vimball) or copy the individual scripts to your .vim/ or vimfiles/ directory.
the haskell_*.vim files from the filetype-plugin directory will be loaded automatically when editing haskell files (NB: this assumes that you have set :filetype plugin on -- see :help filetype-plugin-on). to configure the web browser and to load the ghc compiler plugin for .hs file, add the following in your .vimrc:
" use ghc functionality for haskell files
au Bufenter *.hs compiler ghc
" switch on syntax highlighting
set syntax on
" enable filetype detection, plus loading of filetype plugins
set filetype plugin on
" configure browser for haskell_doc.vim
let g:haddock_browser = "insert path to your web browser"
"let g:haddock_browser = "C:/Program Files/Opera/Opera.exe"
"let g:haddock_browser = "C:/Program Files/Mozilla Firefox/firefox.exe"
"let g:haddock_browser = "C:/Program Files/Internet Explorer/IEXPLORE.exe"
For Macs, Sean Leather recommends (would all other Mac users be happy with this as default?)
" Configure browser for haskell_doc.vim let g:haddock_browser = "open" let g:haddock_browser_callformat = "%s %s"next, edit some Haskell file, call ':DocSettings', and check whether you are happy with what the script has found: g:haddock_browser will be called to display HTML docs (if you need to send your browser into the background, you could set g:haddock_browser_callformat), s:libraries should point to your local copy of the haddock files (if it doesn't, you could set g:haddock_docdir), and s:haddock_indexfile should be a place where vim can cache the information it gathers from the HTML files, so that it only has to do that once per version of the libraries (you can specify another directory for this cache file by setting g:haddock_indexfiledir); if you're happy with the settings, :DocIndex will populate the index, and :ExportDocIndex will store it for future use
Btw, if your GHC installation came without documentation, you can find documentation tarballs at http://www.haskell.org/ghc/docs/.
Before version 20090430, haskellmode used to set completeopt=menu,menuone,longest. I still recommend having menu,menuone in there, but haskellmode no longer interferes with that setting, and in future, other haskellmode menus will take a lead from the presence or absence of menuone there (_? already does).