" Make sure Vim (and not Vi) settings are enabled.
set nocompatible
-" Enable automatic filedection, plugin and indention load.
+
+" EDIT SETTINGS
+
+" Enable automatic file detection, plugin and indention.
filetype plugin indent on
-" Use utf-8 file encoding for all files.
+" Use UTF-8 file encoding for all files.
set fileencodings=utf-8
" Wrap text after 78 characters.
" Enable auto indention.
set autoindent
+" When joining lines only add one space after a sentence.
+set nojoinspaces
+
+" Allow backspacing over autoindent and line breaks.
+set backspace=indent,eol
+
+" Start a comment when hitting enter after a commented line (r) and when using
+" o or O around a commented line (o).
+set formatoptions+=ro
+" Don't break a line if was already longer then 'textwidth' when insert mode
+" started.
+set formatoptions+=l
+
+" Allow virtual editing (cursor can be positioned anywhere, even when there is
+" no character) in visual block mode.
+set virtualedit=block
+
" Already display matches while typing the search command. This makes spotting
" errors easily.
set incsearch
set foldcolumn=2
set foldlevel=99 " no folding at default
-" Use smartcase mode when searching; only check for case if the searched word
-" contains a capital character.
+" Only check for case if the searched word contains a capital character.
set ignorecase
set smartcase
" Activate spell checking, use English as default.
-set spell
-set spelllang=en_us
+if v:version >= 700
+ set spell
+ set spelllang=en_us
+endif
+" DISPLAY SETTINGS
+
" Use a dark background.
set background=dark
set showcmd
" Visualize the line the cursor is currently in.
-set cursorline
+if v:version >= 700
+ set cursorline
+endif
" Display tabs as "^I" and trailing space as "-".
set list
set listchars=trail:-
-" When joining lines only add one space after a sentence.
-set nojoinspaces
-
-" Allow backspacing over autoindent, line breaks and insert mode starts.
-set backspace=indent,eol,start
-
-" Start a comment when hitting enter after a commented line (r) and when using
-" o or O around a commented line (o).
-set formatoptions+=ro
-" Don't break a line if was already longer then 'textwidth' when insert mode
-" started.
-set formatoptions+=l
-
+" EDITOR SETTINGS
" Don't use any modelines.
set nomodeline
-
" When completing paths first use the longest path then display a list of all
" possible files.
set wildmode=longest,list
+" Increase number of tabs which can be opened with the -p option.
+if v:version >= 700
+ set tabpagemax=50
+endif
+
+" MAPPINGS (except for plugins, see PLUGIN SETTINGS below)
" Use "," as my mapleader.
let mapleader = ","
let maplocalleader = ","
-" Settings for the NERD commenter.
-" Don't create any mappings I don't want to use.
-let NERDCreateDefaultMappings=0
-" Map toggle comment.
-map <Leader><Leader> <plug>NERDCommenterToggle
+" Use <space> to move down a page and - to move up one like in mutt.
+nnoremap <Space> <C-f>
+nnoremap - <C-b>
" Maps to change spell language between English and German.
map <Leader>se :set spelllang=en_us<CR>
map <Leader>sd :set spelllang=de_de<CR>
-
" I often type "W" instead of "w" when trying to save a file. Fix my mistake.
-cmap W w
-cmap Wq wq
+" Thanks to Tony Mechelynck <antoine.mechelynck@gmail.com> from the Vim
+" mailing list for the commands.
+if v:version < 700
+ cnoreabbrev W w
+ cnoreabbrev Wq wq
+else
+ cnoreabbrev <expr> W
+ \ ((getcmdtype() == ':' && getcmdpos() <= 2) ? 'w' : 'W')
+ cnoreabbrev <expr> Wq
+ \ ((getcmdtype() == ':' && getcmdpos() <= 3) ? 'wq' : 'Wq')
+endif
" Also fix my typo with "Q".
-cmap Q q
-
+if v:version < 700
+ cnoreabbrev Q q
+else
+ cnoreabbrev <expr> Q
+ \ ((getcmdtype() == ':' && getcmdpos() <= 2) ? 'q' : 'Q')
+endif
" Disable Apple style movements in MacVim.
if has("gui_macvim")
endif
+" SYNTAX SETTINGS
+
" Activate syntax coloring.
syntax enable
+" PLUGIN SETTINGS
+
+" Settings for the NERD commenter.
+" Don't create any mappings I don't want to use.
+let NERDCreateDefaultMappings = 0
+" Map toggle comment.
+map <Leader><Leader> <plug>NERDCommenterToggle
+
+
" Automatically save and the load the file state (stored in ~/.vim/view).
autocmd BufWrite * mkview
autocmd BufRead * loadview