# Editing Wikipedia/MediaWiki articles with VIM

Wikipedia has a number of tips for people who like to edit Wikipedia articles with VIM.

Of course, it all starts with opening an article in VIM. How I do this depends on my mood: I can open it by firing GVIM using Vimperator or I can mount the wiki with WikipediaFS. I prefer the latter.

## Spell-checking

One tool that’s very convenient for editing large sections of prose is VIM’s built-in spell-checker. Example:

set textwidth=0
set spell spelllang=nl


## Wrapping, matching and folding

There’s some more useful stuff that I copied to “ftplugin/mediawiki.vim” in “$HOME/.vim/“: " Wikipedia articles often only have line-breaks at the end of each paragraph, " a situation Vim by default doesn't handle as other text editors. setlocal wrap linebreak setlocal textwidth=0 " No auto-wrap at all setlocal formatoptions-=tc formatoptions+=l if v:version >= 602 | setlocal formatoptions-=a | endif " Make navigation more amenable to the long wrapping lines. noremap k gk noremap j gj noremap gk noremap gj noremap 0 g0 noremap ^ g^ noremap$ g$noremap D dg$
noremap C cg$noremap A g$a
inoremap   gk
inoremap   gj

" utf-8 should be set if not already done globally
setlocal fileencoding=utf-8
setlocal matchpairs+=<:>

" Treat lists, indented text and tables as comment lines and continue with the
" same formatting in the next line (i.e. insert the comment leader) when hitting
"  or using "o".
setlocal formatoptions+=roq

" match HTML tags (taken directly from $VIM/ftplugin/html.vim) if exists("loaded_matchit") let b:match_ignorecase=0 let b:match_skip = 's:Comment' let b:match_words = '<:>,' . \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' .
\ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' . \ '<\@<=$$[^/][^ \t>]*$$[^>]*\%(>\|$\):<\@<=/\1>'
endif

" Other useful mappings
" Insert a matching = automatically while starting a new header.
inoremap   = =(getline('.')==''\|\|getline('.')=~'^=\+$')?"==\Left>":"=" " Enable folding based on ==sections== :set foldexpr=getline(v:lnum)=~'^\$$=\\+\$$[^=]\\+\\1\$$\\s*\$$\\=\\s*$'?\">\".(len(matchstr(getline(v:lnum),'^=\\+'))-1):\"=\"
:set fdm=expr


To have this automatically executed when opening files ending in .mw: