+" fix legacy vi inconsistency
+map Y y$
+
+" allow repeat operator on visual
+vnoremap . :normal .<CR>
+
+" add line without changing position or leaving mode
+noremap <silent> <Leader>o :set paste<CR>m`o<ESC>``:set nopaste<CR>
+noremap <silent> <Leader>O :set paste<CR>m`O<ESC>``:set nopaste<CR>
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" allow undoing in insert-mode
+inoremap <C-U> <C-G>u<C-U>
+inoremap <C-W> <C-G>u<C-W>
+
+nmap <Leader>b :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
+nmap <Leader>B :set expandtab tabstop=8 shiftwidth=8 softtabstop=4<CR>
+nmap <Leader>M :set noexpandtab tabstop=8 softtabstop=4 shiftwidth=4<CR>
+nmap <Leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>
+
+" space will toggle current fold in normal mode
+nnoremap <leader><Space> za
+" create folds around visual selection
+vnoremap <leader><Space> zf
+
+autocmd BufWinLeave *.* mkview
+autocmd BufWinEnter *.* silent loadview
+
+" save with sudo
+cmap w!! w !sudo tee % > /dev/null
+
+
+" options {{{1
+" moving around, searching and patterns {{{2
+set incsearch " show match for partly typed search command
+set ignorecase " ignore case when using a search pattern
+set smartcase " override 'ignorecase' when pattern has upper case characters
+set hlsearch " highlight all matches for the last used search pattern
+
+set nostartofline " don't move the cursor to the first non-blank char of a line
+set path=.,include/,../include/,/usr/include/c++/*,/opt/ros/hydro/include
+
+" displaying text {{{2
+set scrolloff=5 " number of screen lines to show around the cursor
+set nowrap " long lines wrap
+set linebreak " wrap long lines at a character in 'breakat'
+set showbreak=▒▒ " show these chars for wrapped lines
+
+set lazyredraw " don't redraw while executing macros
+
+set list " show chars defined in 'listchars'
+set listchars=tab:»·,trail:· " list of strings used for list mode
+set listchars+=extends:⋯,precedes:⋯
+set sidescrolloff=1 " don't scroll over the listchars
+
+set number " show the line number for each line
+set relativenumber " show the relative line number for each line
+
+" syntax, highlighting and spelling {{{2
+set dictionary=spell " list of dictionary files for keyword completion
+
+" multiple windows {{{2
+set laststatus=2 " 0, 1 or 2; when to use a status line for the last window
+
+set previewheight=20 " default height for the preview window
+
+set splitright " a new window is put right of the current one
+
+" using the mouse {{{2
+set mouse=rnv " list of flags for using the mouse
+set ttymouse=xterm " type of mouse
+
+" messages and info {{{2