aboutsummaryrefslogblamecommitdiff
path: root/vim/vimrc
blob: 249f9e46a2b4e12179d2b7d91a1746d48462e93b (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 :set filetype=apache<CR>
    nnoremap _bi :set filetype=bindzone<CR>
    nnoremap _cs :set filetype=css<CR>
    nnoremap _ht :set filetype=html<CR>
    nnoremap _js :set filetype=javascript<CR>
    nnoremap _md :set filetype=markdown<CR>
    nnoremap _pl :set filetype=perl<CR>
    nnoremap _ph :set filetype=php<CR>
    nnoremap _py :set filetype=python<CR>
    nnoremap _rb :set filetype=ruby<CR>
    nnoremap _sh :set filetype=sh<CR>
    nnoremap _vi :set filetype=vim<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
set nobackup
if has("writebackup")
    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

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

" Terminal
set noesckeys
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

" 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