aboutsummaryrefslogblamecommitdiff
path: root/vim/vimrc
blob: 17233619788e02a5145d4eb794b74ae373d1eb49 (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>
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')
        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 <C-A> <Home>
cnoremap <C-E> <End>

" Completion
set complete-=i
inoremap <C-F> <C-X><C-F>
inoremap <C-]> <C-X><C-]>

" 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

" History
set history=1000

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

" 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 <leader>n :setlocal number!<CR>

" 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=

" Timeout
set ttimeout
set ttimeoutlen=50

" 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 display=lastline
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