-" Use Vim settings, rather than Vi settings (much better!).
-" This must be first, because it changes other options as a side effect.
-set nocompatible
-
-" allow backspacing over everything in insert mode
-set backspace=indent,eol,start
-
-if has("vms")
- set nobackup " do not keep a backup file, use versions instead
-else
- set backup " keep a backup file
- set backupdir=$HOME/.vim/backupdir
-endif
-set history=50 " keep 50 lines of command line history
-set ruler " show the cursor position all the time
-set showcmd " display incomplete commands
-set incsearch " do incremental searching
-set number " show some linenumbers
-
-" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
-" let &guioptions = substitute(&guioptions, "t", "", "g")
+" search {{{1
+set incsearch
+set ignorecase
+set smartcase
+set hlsearch
+" use leader-n to unhighlight search
+nmap <silent> <Leader>n :silent nohl<CR>
+" use leader-# to display the number of matches for the last search
+nmap <Leader># :%s:<C-R>/::gn<CR>
+
+" line wrap {{{1
+set backspace=indent,eol,start " allow backspacing over everything in insert mode
+set wrap " wrap lines
+set linebreak " do not wrap in the middle of a word
+set showbreak=▒▒ " show these chars for wrapped lines
+
+" backup/undo {{{1
+set backup " keep a backup file
+set backupdir=$HOME/.vim/backupdir
+
+set undofile " persistent undo history
+set undodir=$HOME/.vim/backupdir
+
+" NERDTree {{{1
+" open/close NERDTree with \e
+nmap <Leader>e :NERDTreeToggle<CR>
+" <space> to open files/dirs
+let NERDTreeMapActivateNode='<space>'
+" open NERDTree if no files were selected
+autocmd vimenter * if !argc() | NERDTree | endif
+" close vim if only NERDTree is open
+autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
+
+" airline {{{1
+let g:airline#extensions#tabline#enabled = 1
+
+" tabbing {{{1
+: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>
+
+" appearance {{{1
+set background=dark " Dark background, d'uh!
+set number " show some linenumbers
+set showmatch " Show matching brackets.
+set list listchars=tab:»·,trail:· " show these chars for tabs and trailing spaces
+
+" misc options {{{1
+set history=500 " keep 500 lines of command line history
+set ruler " show the cursor position all the time
+set confirm " Ask what to do when closing unsaved documents
+set showcmd " Show (partial) command in status line.
+set autowrite " Automatically save before commands like :next and :make
+"set hidden " Hide buffers when they are abandoned
+set splitright " split right when using :vsp
+set scrolloff=5 " keep at least n lines above/below
+
+set viminfo='100,<50,s10,h,n~/.vim/viminfo " viminfo defaults but save file in .vim
+
+" tabs {{{1
+set softtabstop=4
+set shiftwidth=4
+set expandtab