-" 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
-
+" 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
+
+" 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>
+
+" backup {{{1