aboutsummaryrefslogblamecommitdiff
path: root/vim/vimrc
blob: a36a48bee7ad657859a971d5cb32f34fabbeea44 (plain) (tree)
1
2
3
4
5
6
7
8
9


                

                              
                                
 

                 
                             
 
               












                                                  
 


                    
                                                           
                                                       
                                 
                                                             
             
               

     
         
                                     


                                  
                                                               



                                                     

                     
 
        
                
                 
                       
                              


                                             
                           
                          
         

     
          


                      
                
     

                     
 



                         





                            

             
                        
                            
            




                 
                









                                                                    
 
         
                
 

          
                                      
 


                                  
       



                             
 


                

                              
               
            
              


            
                                        
 





              

           
                     
 


            
           

                    
 
        








                                          

                                                        


                   
 


                       
                                           

     
       
                                     

                                
                                                             




                                                   
 

             
              


                    
       
                       



                                                             
                            

                              
                              
                              
     
 

                   
                                                               

                              
                                                             



                                                   


                  
                
 




                          

                  
                
                             
                        




                                                     


                                

     

                 
                    

                       

                      


                             
     


          


                                 

                   
                     
     
 

                   
                    
 


             




                                       
" 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<CR>
    nnoremap _bi :setlocal filetype=bindzone<CR>
    nnoremap _cs :setlocal filetype=css<CR>
    nnoremap _ht :setlocal filetype=html<CR>
    nnoremap _js :setlocal filetype=javascript<CR>
    nnoremap _md :setlocal filetype=markdown<CR>
    nnoremap _pl :setlocal filetype=perl<CR>
    nnoremap _ph :setlocal filetype=php<CR>
    nnoremap _py :setlocal filetype=python<CR>
    nnoremap _rb :setlocal filetype=ruby<CR>
    nnoremap _sh :setlocal filetype=sh<CR>
    nnoremap _vi :setlocal filetype=vim<CR>
    nnoremap _xm :setlocal filetype=xml<CR>

    " Markdown
    augroup markdown
        au!
        autocmd Filetype markdown setlocal formatoptions+=t
        autocmd Filetype markdown setlocal textwidth=79
        if exists("&colorcolumn")
            autocmd Filetype markdown setlocal colorcolumn=+1
        endif
    augroup END
endif

" Backups
if !strlen($SUDO_USER) && has("unix")
    set backup
    set backupext=.bak
    set backupdir^=~/.vim/backup//
    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")
        set fillchars=diff:\ ,fold:\ ,vert:\ 
    endif
    if exists("&synmaxcol")
        set synmaxcol=3000
    endif
endif

" Commands
if has("cmdline_info")
    set ruler
    set showcmd
    set showmode
endif
cnoremap <C-A> <Home>
cnoremap <C-E> <End>

" Completion
inoremap <C-F> <C-X><C-F>
inoremap <C-]> <C-X><C-]>

" Encoding
set fileformats=unix,dos,mac
if has("multi_byte")
    set encoding=utf-8
endif

" Formatting
set expandtab
set formatoptions=croqn1
silent! set formatoptions+=j
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 <silent> <leader>a :<C-U>call ToggleFormatFlag('a')<CR>
    nnoremap <silent> <leader>c :<C-U>call ToggleFormatFlag('c')<CR>
    nnoremap <silent> <leader>t :<C-U>call ToggleFormatFlag('t')<CR>
endif

" History
set history=1000

" List
set nolist
nnoremap <leader>l :setlocal list!<CR>

" Matching
silent! runtime macros/matchit.vim

" Netrw
if has("eval")
    let g:netrw_silent = 1
    let g:netrw_liststyle = 3
endif

" Messages
set shortmess+=I

" Miscellaneous
set backspace=indent,eol,start
set modelines=0
set report=0
set shellslash

" Numbers
set nonumber
nnoremap <leader>n :setlocal number!<CR>

" Objects
onoremap ir i[
onoremap ar a[
vnoremap ir i[
vnoremap ar a[

" Paste
set nopaste
set pastetoggle=<F10>

" Reading
set autoread

" Scrolling
set scrolloff=0
set sidescrolloff=16

" Search
if has("extra_search")
    set hlsearch
    set incsearch
    nnoremap <leader>h :set hlsearch!<CR>
    nnoremap <leader>i :set incsearch!<CR>
    nnoremap <C-l> :nohlsearch<CR><C-l>
    if has("autocmd")
        augroup vimrc
            autocmd!
            silent! autocmd InsertEnter * set nohlsearch
            silent! autocmd InsertLeave * set hlsearch
        augroup END
    endif
endif

" Spelling
if has("spell")
    set spelllang=en_nz
    nnoremap <leader>s :setlocal spell!<CR>
endif

" 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
else
    set noswapfile
endif

" Terminal
set noesckeys
set lazyredraw
set ttyfast
set visualbell t_vb=

" Typos
if has("user_commands")
    command! -bang -complete=file -nargs=? E e<bang> <args>
    command! -bang -complete=file -nargs=? W w<bang> <args>
    command! -bang -complete=file -nargs=? WQ wq<bang> <args>
    command! -bang -complete=file -nargs=? Wq wq<bang> <args>
    command! -bang Q q<bang>
    command! -bang Qa qa<bang>
    command! -bang QA qa<bang>
    command! -bang Wa wa<bang>
    command! -bang WA wa<bang>
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
endif

" Unmaps
noremap <F1> <nop>
nnoremap K <nop>
nnoremap Q <nop>

" 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 nowrap
nnoremap j gj
nnoremap k gk
nnoremap <leader>w :set wrap!<CR>
if has("linebreak")
    set linebreak
    set showbreak=...
endif

" Writing
nnoremap ZW :w!<CR>
nnoremap ZA :wa!<CR>

" Yanking
nnoremap Y y$

" Local
if filereadable(glob("~/.vimrc.local"))
    source ~/.vimrc.local
endif