" Compatibility set nocompatible " Plugins silent! call pathogen#infect() silent! call pathogen#helptags() " Filetypes if has('autocmd') filetype indent plugin on " Shortcuts nnoremap _ap :setlocal filetype=apache nnoremap _bi :setlocal filetype=bindzone nnoremap _cs :setlocal filetype=css nnoremap _ht :setlocal filetype=html nnoremap _js :setlocal filetype=javascript nnoremap _md :setlocal filetype=markdown nnoremap _pl :setlocal filetype=perl nnoremap _ph :setlocal filetype=php nnoremap _py :setlocal filetype=python nnoremap _rb :setlocal filetype=ruby nnoremap _sh :setlocal filetype=sh nnoremap _vi :setlocal filetype=vim nnoremap _xm :setlocal filetype=xml endif " Backups if !strlen($SUDO_USER) && has('unix') set backup set backupext=.bak set backupdir^=~/.vim/backup// set backupskip+=*/shm/* if !isdirectory($HOME . '/.vim/backup') && exists('*mkdir') call mkdir($HOME . '/.vim/backup', 'p', 0700) endif else set nobackup set nowritebackup endif " Colors if has('syntax') syntax enable set background=dark silent! colorscheme sahara if has('folding') let &fillchars = 'diff: ,fold: ,vert: ' endif if exists('&synmaxcol') set synmaxcol=300 endif endif " Commands if has('cmdline_info') set ruler set showcmd set showmode endif cnoremap cnoremap " Completion set complete-=i inoremap inoremap " Digraphs if has('digraphs') digraph ./ 8230 endif " Encoding set fileformats=unix,dos,mac if has('multi_byte') set encoding=utf-8 endif " Formatting set autoindent set expandtab set smarttab set nojoinspaces set shiftround set shiftwidth=4 set softtabstop=4 set tabstop=4 nnoremap J mzJ`z if has('eval') function! ToggleFormatFlag(flag) let l:operation = (&formatoptions =~ a:flag) ? '-=' : '+=' silent! exec 'setlocal formatoptions' . l:operation . a:flag setlocal formatoptions? endfunction nnoremap a :call ToggleFormatFlag('a') nnoremap c :call ToggleFormatFlag('c') nnoremap t :call ToggleFormatFlag('t') endif " History set history=1000 " List set nolist nnoremap l :setlocal list! " Matching silent! runtime macros/matchit.vim " Messages set shortmess+=I " Miscellaneous set backspace=indent,eol,start set modelines=0 set nrformats-=octal set report=0 set shellslash " Netrw if has('eval') let g:netrw_silent = 1 let g:netrw_liststyle = 3 let g:netrw_list_hide = '^\.,\~$,^tags$' endif " Numbers set nonumber nnoremap n :setlocal number! " Paste set nopaste set pastetoggle= " Reading set autoread " Scrolling set scrolloff=0 set sidescrolloff=16 " Search if has('extra_search') set hlsearch set incsearch nnoremap h :set hlsearch! nnoremap i :set incsearch! nnoremap :nohlsearch if has('autocmd') augroup highlight autocmd! silent! autocmd InsertEnter * set nohlsearch silent! autocmd InsertLeave * set hlsearch augroup END endif endif " Spelling if has('spell') set spelllang=en_nz nnoremap s :setlocal spell! endif " State if has('viminfo') if has('autocmd') augroup viminfoskip autocmd! silent! autocmd BufNewFile,BufReadPre \ /tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*,*/shm/* \ setlocal viminfo= augroup END endif endif " Substitution nnoremap & :&& xnoremap & :&& " Swaps if !strlen($SUDO_USER) && has('unix') set swapfile set directory^=~/.vim/swap// if !isdirectory($HOME . '/.vim/swap') && exists('*mkdir') call mkdir($HOME . '/.vim/swap', 'p', 0700) endif " Don't swap sensitive files if has('autocmd') augroup swapskip autocmd! silent! autocmd BufNewFile,BufReadPre \ /tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*,*/shm/* \ setlocal noswapfile augroup END endif else set noswapfile endif " Terminal set noesckeys set lazyredraw set ttyfast set visualbell t_vb= " Timeout set ttimeout set ttimeoutlen=50 " Typos if has('user_commands') command! -bang -complete=file -nargs=? E e command! -bang -complete=file -nargs=? W w command! -bang -complete=file -nargs=? WQ wq command! -bang -complete=file -nargs=? Wq wq command! -bang Q q command! -bang Qa qa command! -bang QA qa command! -bang Wa wa command! -bang WA wa endif " Undo set undolevels=1000 if !strlen($SUDO_USER) && has('unix') && has('persistent_undo') set undofile set undodir^=~/.vim/undo// if !isdirectory($HOME . '/.vim/undo') && exists('*mkdir') call mkdir($HOME . '/.vim/undo', 'p', 0700) endif " Don't track changes to sensitive files if has('autocmd') augroup undoskip autocmd! silent! autocmd BufWritePre \ /tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*,*/shm/* \ setlocal noundofile augroup END endif endif " Unmaps noremap nnoremap K nnoremap Q " Visual if has('virtualedit') set virtualedit+=block endif " Wildmenu if has('wildmenu') set wildmenu set wildmode=longest:list if has('wildignore') set wildignore+=*.a,*.o set wildignore+=*.bmp,*.gif,*.ico,*.jpg,*.png set wildignore+=.DS_Store,.git,.hg,.svn set wildignore+=*~,*.swp,*.tmp endif if exists('&wildignorecase') set wildignorecase endif endif " Windows if has('windows') set laststatus=1 set splitbelow if has('vertsplit') set splitright endif if exists('&showtabline') set showtabline=1 endif endif " Wrapping set display=lastline set nowrap nnoremap j gj nnoremap k gk nnoremap w :set wrap! if has('linebreak') set linebreak set showbreak=... endif " Writing set autowrite nnoremap ZW :w! nnoremap ZA :wa! " Yanking nnoremap Y y$ " Local if filereadable(glob('~/.vimrc.local')) source ~/.vimrc.local endif