"" Initial config from http://vim-bootstrap.com/ "***************************************************************************** "" NeoBundle core "***************************************************************************** if has('vim_starting') set nocompatible " Be iMproved " Required: set runtimepath+=~/.vim/bundle/neobundle.vim/ endif let neobundle_readme=expand('~/.vim/bundle/neobundle.vim/README.md') let g:vim_bootstrap_langs = "python,c,go,rust" let g:vim_bootstrap_editor = "vim" " nvim or vim if !filereadable(neobundle_readme) echo "Installing NeoBundle..." echo "" silent !mkdir -p ~/.vim/bundle silent !git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim/ let g:not_finsh_neobundle = "yes" " Run shell script if exist on custom select language endif " Required: call neobundle#begin(expand('~/.vim/bundle/')) " Let NeoBundle manage NeoBundle " Required: NeoBundleFetch 'Shougo/neobundle.vim' "***************************************************************************** "" NeoBundle install packages "***************************************************************************** NeoBundle '907th/vim-auto-save' NeoBundle 'scrooloose/nerdtree' NeoBundle 'jistr/vim-nerdtree-tabs.git' NeoBundle 'tpope/vim-commentary' NeoBundle 'tpope/vim-fugitive' NeoBundle 'ctrlpvim/ctrlp.vim' NeoBundle 'vim-airline/vim-airline' NeoBundle 'vim-airline/vim-airline-themes' NeoBundle 'airblade/vim-gitgutter' NeoBundle 'sheerun/vim-polyglot' NeoBundle 'vim-scripts/grep.vim' NeoBundle 'vim-scripts/CSApprox' NeoBundle 'bronson/vim-trailing-whitespace' NeoBundle 'jiangmiao/auto-pairs' NeoBundle 'majutsushi/tagbar' NeoBundle 'scrooloose/syntastic' NeoBundle "Yggdroot/indentLine" NeoBundle 'Shougo/vimproc.vim', { \ 'build' : { \ 'windows' : 'tools\\update-dll-mingw', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'make -f make_unix.mak', \ }, \ } "" Autosave one """let auto_save=1 "" Vim-Session NeoBundle 'xolox/vim-misc' NeoBundle 'xolox/vim-session' if v:version >= 703 NeoBundle 'Shougo/vimshell.vim' endif if v:version >= 704 "" Snippets NeoBundle 'SirVer/ultisnips' NeoBundle 'FelikZ/ctrlp-py-matcher' endif NeoBundle 'honza/vim-snippets' "" Color NeoBundle 'tomasr/molokai' "" Vim-Bootstrap Updater by sherzberg NeoBundle 'avelino/vim-bootstrap-updater' "" Custom bundles "" Python Bundle NeoBundle "davidhalter/jedi-vim" "" Rust Bundle NeoBundle "rust-lang/rust.vim" NeoBundle "racer-rust/vim-racer" "" Go Lang Bundle NeoBundle "fatih/vim-go" "" elm Bundle NeoBundle "lambdatoast/elm.vim" "" C Bundle NeoBundle 'vim-scripts/c.vim' "" Include user's extra bundle if filereadable(expand("~/.vimrc.local.bundles")) source ~/.vimrc.local.bundles endif call neobundle#end() " Required: filetype plugin indent on " If there are uninstalled bundles found on startup, " this will conveniently prompt you to install them. NeoBundleCheck "***************************************************************************** "" Basic Setup "*****************************************************************************" ""Rust lang setup "" let g:racer_cmd = /target/release/racer "" let $RUST_SRC_PATH="/src/" "" let g:rustfmt_autosave = 1 "" Encoding set encoding=utf-8 set fileencoding=utf-8 set fileencodings=utf-8 "" Fix backspace indent set backspace=indent,eol,start "" Tabs. May be overriten by autocmd rules set tabstop=4 set softtabstop=0 set shiftwidth=4 set expandtab set smarttab "" Map leader to , let mapleader=',' "" Enable hidden buffers set hidden "" Searching set hlsearch set incsearch set ignorecase set smartcase "" Encoding set bomb set binary set ttyfast "" Directories for swp files set nobackup set noswapfile set fileformats=unix,dos,mac set showcmd set shell=/bin/sh " session management let g:session_directory = "~/.vim/session" let g:session_autoload = "no" let g:session_autosave = "no" let g:session_command_aliases = 1 "***************************************************************************** "" Visual Settings "***************************************************************************** syntax on set ruler set number let no_buffers_menu=1 if !exists('g:not_finsh_neobundle') " colorscheme molokai colorscheme Tomorrow-Night endif set guifont=Menlo:h18 set mousemodel=popup set t_Co=256 set guioptions=egmrti set gfn=Monospace\ 10 if has("gui_running") if has("gui_mac") || has("gui_macvim") set guifont=Menlo:h18 set transparency=7 endif else let g:CSApprox_loaded = 1 if $COLORTERM == 'gnome-terminal' set term=gnome-256color else if $TERM == 'xterm' set term=xterm-256color endif endif endif if &term =~ '256color' set t_ut= endif "" Disable the blinking cursor. set gcr=a:blinkon0 set scrolloff=3 "" Status bar set laststatus=2 "" Use modeline overrides set modeline set modelines=10 set title set titleold="Terminal" set titlestring=%F set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)\ if exists("*fugitive#statusline") set statusline+=%{fugitive#statusline()} endif " vim-airline let g:airline_theme = 'powerlineish' let g:airline#extensions#syntastic#enabled = 1 let g:airline#extensions#branch#enabled = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tagbar#enabled = 1 "***************************************************************************** "" Abbreviations "***************************************************************************** "" no one is really happy until you have this shortcuts cnoreabbrev W! w! cnoreabbrev Q! q! cnoreabbrev Qall! qall! cnoreabbrev Wq wq cnoreabbrev Wa wa cnoreabbrev wQ wq cnoreabbrev WQ wq cnoreabbrev W w cnoreabbrev Q q cnoreabbrev Qall qall "" NERDTree configuration let g:NERDTreeChDirMode=2 let g:NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__'] let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$'] let g:NERDTreeShowBookmarks=1 let g:nerdtree_tabs_focus_on_files=1 let g:NERDTreeMapOpenInTabSilent = '' let g:NERDTreeWinSize = 50 set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pyc,*.db,*.sqlite nnoremap :NERDTreeFind noremap :NERDTreeToggle " grep.vim nnoremap f :Rgrep let Grep_Default_Options = '-IR' let Grep_Skip_Files = '*.log *.db' let Grep_Skip_Dirs = '.git node_modules' " vimshell.vim let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")' let g:vimshell_prompt = '$ ' " terminal emulation if g:vim_bootstrap_editor == 'nvim' nnoremap sh :terminal else nnoremap sh :VimShellCreate endif "***************************************************************************** "" Functions "***************************************************************************** if !exists('*s:setupWrapping') function s:setupWrapping() set wrap set wm=2 set textwidth=79 endfunction endif "***************************************************************************** "" Autocmd Rules "***************************************************************************** "" The PC is fast enough, do syntax highlight syncing from start autocmd BufWritePre * :%s/\s\+$//e augroup vimrc-sync-fromstart autocmd! autocmd BufEnter * :syntax sync fromstart augroup END "" Remember cursor position augroup vimrc-remember-cursor-position autocmd! autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif augroup END "" txt augroup vimrc-wrapping autocmd! autocmd BufRead,BufNewFile *.txt call s:setupWrapping() augroup END "" make/cmake augroup vimrc-make-cmake autocmd! autocmd FileType make setlocal noexpandtab autocmd BufNewFile,BufRead CMakeLists.txt setlocal filetype=cmake augroup END set autoread "***************************************************************************** "" Mappings "***************************************************************************** "" Split noremap h :split noremap v :vsplit "" Git noremap ga :Gwrite noremap gc :Gcommit noremap gsh :Gpush noremap gll :Gpull noremap gs :Gstatus noremap gb :Gblame noremap gd :Gvdiff noremap gr :Gremove " session management nnoremap so :OpenSession nnoremap ss :SaveSession nnoremap sd :DeleteSession nnoremap sc :CloseSession "" Tabs nnoremap gt nnoremap gT nnoremap :tabnew "" Set working directory nnoremap . :lcd %:p:h "" Opens an edit command with the path of the currently edited file filled in noremap e :e =expand("%:p:h") . "/" "" Opens a tab edit command with the path of the currently edited file filled noremap te :tabe =expand("%:p:h") . "/" "" ctrlp.vim set wildmode=list:longest,list:full set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__ let g:ctrlp_custom_ignore = '\v[\/](node_modules|target|dist)|(\.(swp|tox|ico|git|hg|svn))$' let g:ctrlp_user_command = "find %s -type f | grep -Ev '"+ g:ctrlp_custom_ignore +"'" let g:ctrlp_use_caching = 1 " The Silver Searcher if executable('ag') set grepprg=ag\ --nogroup\ --nocolor let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' let g:ctrlp_use_caching = 0 endif cnoremap =expand("%:p:h") . "/" noremap b :CtrlPBuffer let g:ctrlp_map = 'e' let g:ctrlp_open_new_file = 'r' let g:ctrlp_cache_dir = $HOME . '/.cache/ctrlp' " snippets let g:UltiSnipsExpandTrigger="" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" let g:UltiSnipsEditSplit="vertical" " syntastic let g:syntastic_always_populate_loc_list=1 let g:syntastic_error_symbol='✗' let g:syntastic_warning_symbol='⚠' let g:syntastic_style_error_symbol = '✗' let g:syntastic_style_warning_symbol = '⚠' let g:syntastic_auto_loc_list=1 let g:syntastic_aggregate_errors = 1 " Tagbar nmap :TagbarToggle let g:tagbar_autofocus = 1 " IndentLine let g:indentLine_enabled = 1 let g:indentLine_concealcursor = 0 let g:indentLine_char = '┆' let g:indentLine_faster = 1 " Disable visualbell set visualbell t_vb= "" Copy/Paste/Cut if has('unnamedplus') set clipboard=unnamed,unnamedplus endif noremap YY "+y noremap p "+gP noremap XX "+x if has('macunix') " pbcopy for OSX copy/paste vmap :!pbcopy vmap :w !pbcopy endif "" Buffer nav noremap z :bp noremap q :bp noremap x :bn noremap w :bn "" Close buffer noremap c :bd "" Clean search (highlight) nnoremap :noh "" Switching windows noremap j noremap k noremap l noremap h "" Vmap for maintain Visual Mode after shifting > and < vmap < >gv "" Move visual block vnoremap J :m '>+1gv=gv vnoremap K :m '<-2gv=gv "" Open current line on GitHub noremap ,o :!echo `git url`/blob/`git rev-parse --abbrev-ref HEAD`/%\#L=line('.') \| xargs open "" Custom configs " vim-python augroup vimrc-python autocmd! autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 colorcolumn=79 \ formatoptions+=croq softtabstop=4 smartindent \ cinwords=if,elif,else,for,while,try,except,finally,def,class,with augroup END " jedi-vim let g:jedi#popup_on_dot = 1 let g:jedi#goto_assignments_command = "g" let g:jedi#goto_definitions_command = "d" let g:jedi#documentation_command = "k" let g:jedi#usages_command = "n" let g:jedi#rename_command = "r" let g:jedi#show_call_signatures = "1" let g:jedi#completions_command = "" let g:jedi#smart_auto_mappings = 0 " syntastic let g:syntastic_python_checkers=['python', 'flake8'] " vim-airline let g:airline#extensions#virtualenv#enabled = 1 let g:tagbar_type_go = { \ 'ctagstype' : 'go', \ 'kinds' : [ 'p:package', 'i:imports:1', 'c:constants', 'v:variables', \ 't:types', 'n:interfaces', 'w:fields', 'e:embedded', 'm:methods', \ 'r:constructor', 'f:functions' ], \ 'sro' : '.', \ 'kind2scope' : { 't' : 'ctype', 'n' : 'ntype' }, \ 'scope2kind' : { 'ctype' : 't', 'ntype' : 'n' }, \ 'ctagsbin' : 'gotags', \ 'ctagsargs' : '-sort -silent' \ } " vim-go augroup FileType go au! au FileType go nmap gd (go-def) au FileType go nmap dd (go-def-vertical) au FileType go nmap dv (go-doc-vertical) au FileType go nmap db (go-doc-browser) au FileType go nmap gi (go-info) au FileType go nmap gr (go-run) au FileType go nmap rb (go-build) au FileType go nmap gt (go-test) augroup END "" Include user's local vim config if filereadable(expand("~/.vimrc.local")) source ~/.vimrc.local endif "***************************************************************************** "" Convenience variables "***************************************************************************** " vim-airline if !exists('g:airline_symbols') let g:airline_symbols = {} endif if !exists('g:airline_powerline_fonts') let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' let g:airline_left_sep = '▶' let g:airline_left_alt_sep = '»' let g:airline_right_sep = '◀' let g:airline_right_alt_sep = '«' let g:airline#extensions#branch#prefix = '⤴' "➔, ➥, ⎇ let g:airline#extensions#readonly#symbol = '⊘' let g:airline#extensions#linecolumn#prefix = '¶' let g:airline#extensions#paste#symbol = 'ρ' let g:airline_symbols.linenr = '␊' let g:airline_symbols.branch = '⎇' let g:airline_symbols.paste = 'ρ' let g:airline_symbols.paste = 'Þ' let g:airline_symbols.paste = '∥' let g:airline_symbols.whitespace = 'Ξ' else let g:airline#extensions#tabline#left_sep = '' let g:airline#extensions#tabline#left_alt_sep = '' " powerline symbols let g:airline_left_sep = '' let g:airline_left_alt_sep = '' let g:airline_right_sep = '' let g:airline_right_alt_sep = '' let g:airline_symbols.branch = '' let g:airline_symbols.readonly = '' let g:airline_symbols.linenr = '' endif """ keymappings noremap :s/\([ ]*\)\([^=^\t]*\)\([+-/* ]=\) \([^;^\t]*\);/\1\4 \3 \2;:nohl