+if has('statusline')
+ " Always display the status line even if there is only one window.
+ set laststatus=2
+
+ set statusline=
+ " on the left
+ set statusline+=%02n: " buffer number
+ set statusline+=%f\ " path to current file in buffer
+ set statusline+=%h " [help] if buffer is help file
+ set statusline+=%w " [Preview] if buffer is preview buffer
+ set statusline+=%m " [+] if buffer was modified,
+ " [-] if 'modifiable' is off
+ set statusline+=%r " [RO] if buffer is read only
+
+ " on the right
+ set statusline+=%= " right align
+ set statusline+=%-12.(%l,%c%V%)\ " line number (%l),
+ " column number (%c),
+ " virtual column number if different
+ " than %c (%V)
+ set statusline+=%P " position in file in percent
+endif
+
+
+" MAPPINGS (except for plugins, see PLUGIN SETTINGS below)
+
+" Easy way to exit insert mode.
+inoremap jj <Esc>
+
+" Disable arrow keys for all modes except command modes. Thanks to James Vega
+" (http://git.jamessan.com/?p=etc/vim.git;a=summary).
+map <right> <nop>
+map <left> <nop>
+map <up> <nop>
+map <down> <nop>
+imap <right> <nop>
+imap <left> <nop>
+imap <up> <nop>
+imap <down> <nop>
+" Also disable up and down array in command mode, use <C-p>/<C-n> as
+" replacement (see below).
+cmap <up> <nop>
+cmap <down> <nop>
+
+" Use Ctrl-P/Ctrl-N as replacement for <Up>/<Down> in command mode. Thanks to
+" abstrakt and grayw in #vim on Freenode (2010-04-12 21:20).
+cnoremap <C-p> <up>
+cnoremap <C-n> <down>
+
+" Use <space> to move down a page and - to move up one like in mutt.
+nnoremap <Space> <C-f>
+nnoremap - <C-b>
+
+" Go to next and previous buffer. Thanks to elik in #vim on Freenode
+" (2010-05-16 18:38) for this idea.
+nnoremap <silent> gb :bnext<CR>
+nnoremap <silent> gB :bprev<CR>
+
+" Fast access to buffers.
+nnoremap <Leader>1 :1b<CR>
+nnoremap <Leader>2 :2b<CR>
+nnoremap <Leader>3 :3b<CR>
+nnoremap <Leader>4 :4b<CR>
+nnoremap <Leader>5 :5b<CR>
+nnoremap <Leader>6 :6b<CR>
+nnoremap <Leader>7 :7b<CR>
+nnoremap <Leader>8 :8b<CR>
+nnoremap <Leader>9 :9b<CR>
+nnoremap <Leader>0 :10b<CR>
+
+" Make last active window the only window. Similar to <C-w> o.
+nnoremap <C-w>O <C-w>p<C-w>o
+
+" Maps to change spell language between English and German and disable spell
+" checking.
+if v:version >= 700
+ map <Leader>sn :set nospell<CR>
+ map <Leader>se :set spell spelllang=en_us<CR>
+ map <Leader>sd :set spell spelllang=de_de<CR>
+endif
+
+" Add semicolon to the end of the line. Thanks to
+" http://www.van-laarhoven.org/vim/.vimrc for this idea and godlygeek in #vim
+" on Freenode for an improved version which doesn't clobber any marks.
+nnoremap <silent> <Leader>; :call setline(line('.'), getline('.') . ';')<CR>
+
+" I often type "W" instead of "w" when trying to save a file. Fix my mistake.
+" Thanks to Tony Mechelynck <antoine.mechelynck@gmail.com> from the Vim
+" mailing list for the commands.
+if v:version < 700
+ cnoreabbrev W w
+ cnoreabbrev Wa wa
+ cnoreabbrev Wq wq
+ cnoreabbrev Wqa wqa
+else
+ cnoreabbrev <expr> W
+ \ ((getcmdtype() == ':' && getcmdpos() <= 2) ? 'w' : 'W')
+ cnoreabbrev <expr> Wa
+ \ ((getcmdtype() == ':' && getcmdpos() <= 3) ? 'wa' : 'Wa')
+ cnoreabbrev <expr> Wq
+ \ ((getcmdtype() == ':' && getcmdpos() <= 3) ? 'wq' : 'Wq')
+ cnoreabbrev <expr> Wqa
+ \ ((getcmdtype() == ':' && getcmdpos() <= 4) ? 'wqa' : 'Wqa')
+endif
+" Also fix my typo with "Q".
+if v:version < 700
+ cnoreabbrev Q q
+ cnoreabbrev Qa qa
+else
+ cnoreabbrev <expr> Q
+ \ ((getcmdtype() == ':' && getcmdpos() <= 2) ? 'q' : 'Q')
+ cnoreabbrev <expr> Qa
+ \ ((getcmdtype() == ':' && getcmdpos() <= 3) ? 'qa' : 'Qa')
+endif
+
+" Make sure xa0 (alt + space) is automatically changed to a normal whitespace
+" if pressed accidentally while in insert mode (happens on Mac when alt
+" doesn't send escape). filereadable() is necessary for Leopard were 'mac' is
+" no longer set on the console.
+if has('mac') || filereadable('/Users/.localized')
+ inoremap <Char-0xa0> <Space>
+endif