" My vimrc file.
"
-" Maintainer: Samir Benmendil <samir.benmendil[at]gmail[dot]com>
+" Author: Samir Benmendil <samir.benmendil[at]gmail[dot]com>
"
-if v:progname =~? "evim"
- finish
-endif
-
-" Use Vim settings, rather than Vi settings (much better!).
-" This must be first, because it changes other options as a side effect.
-set nocompatible
-
" pathogen.vim runtime path manipulation
silent! call pathogen#infect()
set ignorecase
set smartcase
set hlsearch
-nmap <Leader>q :nohl<CR>
+" 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
+
+" indent {{{1
+set expandtab " expand <Tab> to spaces in Insert mode
+set smarttab " a <Tab> in an indent inserts 'shiftwidth' spaces
+set softtabstop=4 " if non-zero, number of spaces to insert for a <Tab>
+set shiftwidth=4 " number of spaces used for each step of (auto)indent
+set shiftround " round to 'shiftwidth' for "<<" and ">>"
+
+set cindent " use smart C indenting (see :h C-indenting)
+set cinoptions=l1,c4,(0,U1,w1,m1,j1,J1
+
+: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/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
" 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
-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
-
" appearance {{{1
set background=dark " Dark background, d'uh!
set number " show some linenumbers
set showmatch " Show matching brackets.
-set showbreak=▒▒ " show these chars for wrapped lines
set list listchars=tab:»·,trail:· " show these chars for tabs and trailing spaces
" misc options {{{1
"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 backspace=indent,eol,start " allow backspacing over everything in insert mode
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
" misc bindings {{{1
" Don't use Ex mode, use Q for formatting