" Vundle plugins {{{ " ============================================================================ " set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' Plugin 'tpope/vim-fugitive' Plugin 'kien/ctrlp.vim' Plugin 'bling/vim-airline' Plugin 'Valloric/YouCompleteMe' Plugin 'scrooloose/nerdtree' Plugin 'Shougo/vimproc.vim' Plugin 'Shougo/vimshell.vim' Plugin 'tpope/vim-markdown' Plugin 'altercation/vim-colors-solarized' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " Put your non-Plugin stuff after this line " Configuring NerdTree noremap :NERDTreeToggle let NERDTreeIgnore=[ \ ".*\\.class$", \ ".*\\.o$", \ ".*\\.hi$", \ ".*\\.pyc$" \ ] " Configuring ctrlp noremap :CtrlP noremap :CtrlPBuffer " Configuring Airline let g:airline_powerline_fonts=1 " Configuring YouCompleteMe let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py' " Configuring VimShell noremap :VimShell -split " Loading Solarized set t_Co=256 let g:solarized_termcolors=256 let g:solarized_contrast="normal" let g:solarized_underline=0 let g:solarized_termtrans=0 syntax enable set background=dark colorscheme solarized " }}} " General Options {{{ " ============================================================================ " set number " line numbers on the right side set showcmd " show the commands while typing set splitright " open new splits on the right set splitbelow " open new splits below set autoread " autoreload file on change set scrolloff=8 " keep the cursor 8 lines away from the top/bottom set ruler " show the lines/% bottomright set encoding=utf-8 " set default encoding set laststatus=2 " always show the status line " wrap lines at 80 characters set formatprg=par\ -w80 set formatoptions=t set textwidth=80 " indentation set tabstop=4 " tab is 4 width set softtabstop=4 " tab is 4 width set shiftwidth=4 " for use with > and < set expandtab " tab key puts spaces set autoindent " in case filetype indent is wrong filetype plugin indent on set list " if tabs, show them with 2 spaces set listchars=tab:\·\ ,trail:· " display tabs with a leading \cdot " trailing whitespace looks like \cdot " Don't save tmp/swap files in the current directory. set directory=~/.vim/tmp/swap/ set backupdir=~/.vim/tmp/backup/ " Learning to use decent vim. noremap noremap noremap noremap " Keep selection after indenting vnoremap > >gv vnoremap < " center screen with noremap zz " rewrite file with sudo cmap w!! w !sudo tee % >/dev/null " paste the clipboard noremap :r!xclip -sel c -o " }}} " Filetype specific configuration. {{{ " ============================================================================ " " Haskell {{{ " ---------------------------------------------------------------------------- " autocmd FileType haskell call HaskellHook() autocmd BufRead,BufNewFile *.lhs call HaskellHook() autocmd BufRead,BufNewFile *.hsc set filetype=haskell function HaskellHook() " Ghci shortcut noremap :!ghci -Wall '%' " Haskell Styling noremap :%!stylish-haskell noremap :!hlint % " Vim-hoogle noremap :Hoogle noremap :HoogleClose endfunction " }}} " Java {{{ " ---------------------------------------------------------------------------- " autocmd FileType java call JavaHook() function JavaHook() " Javac shortcut noremap :!javac % " Java shortcut noremap :!java %:r endfunction " }}} " C {{{ " ---------------------------------------------------------------------------- " autocmd FileType c call CHook() function CHook() " gcc shortcut noremap :!gcc % -o %:r " execute noremap :!./%:r endfunction " }}} " Ruby {{{ " ---------------------------------------------------------------------------- " autocmd FileType ruby call RubyHook() autocmd FileType eruby call RubyHook() function RubyHook() setlocal tabstop=2 setlocal shiftwidth=2 set softtabstop=2 noremap :!irb -Ilib -r ./% " Use rake as makeprogram set makeprg=rake " Folding set foldmethod=syntax endfunction " }}} " R {{{ " ---------------------------------------------------------------------------- " autocmd FileType r call RHook() function RHook() " Interactive shortcut noremap :'<,'>w !R --no-save --interactive endfunction " }}} " Latex {{{ " ---------------------------------------------------------------------------- " autocmd FileType tex call TexHook() function TexHook() setlocal tabstop=2 setlocal shiftwidth=2 set softtabstop=2 " Make a pdf noremap :!pdflatex '%' noremap :!spawn zathura '%:p:r.pdf' endfunction " }}} " Markdown {{{ " ---------------------------------------------------------------------------- " autocmd Filetype markdown call MarkdownHook() function MarkdownHook() " Making and showing html noremap :!markdown '%:p' > '%:p:r.html' noremap :!spawn firefox '%:p:r.html' endfunction " }}} " Python {{{ " ---------------------------------------------------------------------------- " autocmd FileType python call PythonHook() function Pylint() silent !pylint --reports=n --output-format=parseable '%' > errors.err 2> /dev/null cfile silent !rm errors.err redraw! copen endfunction function PythonFold(lnum) if getline(a:lnum-1) =~ '^\s*def\s' || getline(a:lnum-1) =~ '^\s*class\s' return indent(a:lnum-1) / 4 + 1 endif if getline(a:lnum) =~ '^\s*def\s' || getline(a:lnum) =~ '^\s*class\s' return indent(a:lnum) / 4 endif if getline(a:lnum+1) =~ '^\s*def\s' || getline(a:lnum+1) =~ '^\s*class\s' return indent(a:lnum + 1) / 4 endif if getline(a:lnum+1) =~ '^\S.*$' return '0' endif return '=' endfunction function PythonFoldText() return repeat(' ', indent(v:foldstart - 1) + 4) . '+' endfunction function PythonHook() set formatoptions+=rq noremap :!python -i '%' noremap :call Pylint() " Uncomment to fold. Slows down SuperTab extremely set foldmethod=expr set foldexpr=PythonFold(v:lnum) set foldtext=PythonFoldText() endfunction " }}} " }}} " vim: foldmethod=marker