set nocompatible filetype off "required ""set rtp+=~/.vim/bundle/Vundle.vim ""call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required ""Plugin 'VundleVim/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo "myplugins "Plugin 'valloric/youcompleteme' ""Plugin 'shougo/neocomplete.vim' ""call vundle#end() filetype plugin on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplete. let g:neocomplete#enable_at_startup = 1 " Use smartcase. let g:neocomplete#enable_smart_case = 1 " Set minimum syntax keyword length. let g:neocomplete#sources#syntax#min_keyword_length = 3 " Define dictionary. let g:neocomplete#sources#dictionary#dictionaries = { \ 'default' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'scheme' : $HOME.'/.gosh_completions' \ } " Define keyword. if !exists('g:neocomplete#keyword_patterns') let g:neocomplete#keyword_patterns = {} endif let g:neocomplete#keyword_patterns['default'] = '\h\w*' " Recommended key-mappings. " : close popup and save indent. inoremap =my_cr_function() function! s:my_cr_function() return (pumvisible() ? "\" : "" ) . "\" " For no inserting key. "return pumvisible() ? "\" : "\" endfunction " : completion. inoremap pumvisible() ? "\" : "\" " Close popup by . NO, this makes it slow af to type "inoremap pumvisible() ? "\" : "\" " AutoComplPop like behavior. let g:neocomplete#enable_auto_select = 0 " Enable omni completion. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd FileType python setlocal omnifunc=pythoncomplete#Complete autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags " Enable heavy omni completion. if !exists('g:neocomplete#sources#omni#input_patterns') let g:neocomplete#sources#omni#input_patterns = {} endif """""""""""""""""""""""""""""""""""" if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin() Plug 'drewtempelmeyer/palenight.vim' Plug 'https://tpope.io/vim/surround.git' Plug 'https://github.com/tpope/vim-repeat.git' Plug 'https://github.com/tpope/vim-fugitive.git' Plug 'https://github.com/suan/vim-instant-markdown', {'for': 'markdown'} "Plug 'plasticboy/vim-markdown', {'for': 'markdown'} call plug#end() "let g:vim_markdown_new_list_item_indent " vim-instant-markdown options let g:instant_markdown_allow_unsafe_content = 1 let g:instant_markdown_mathjax = 1 let g:instant_markdown_browser = "chromium-browser --incognito" let g:instant_markdown_autoscroll = 1 let g:instant_markdown_autostart = 1 """""""""""""""""""""""""""""""""""" " change cursor shape for different editing modes, neovim does this by default if !has('nvim') if exists('$TMUX') let &t_SI = "\Ptmux;\\e[5 q\\\" let &t_SR = "\Ptmux;\\e[4 q\\\" let &t_EI = "\Ptmux;\\e[2 q\\\" else let &t_SI = "\e[6 q" let &t_SR = "\e[4 q" let &t_EI = "\e[2 q" endif endif command! W execute 'silent w !sudo tee % >/dev/null' | edit! " open a terminal in $PWD nnoremap tt :terminal " ------ autocmd ------ " Reload changes if file changed outside of vim requires autoread augroup load_changed_file autocmd! autocmd FocusGained,BufEnter * if mode() !=? 'c' | checktime | endif autocmd FileChangedShellPost * echo "Changes loaded from source file" augroup END " when quitting a file, save the cursor position augroup save_cursor_position autocmd! autocmd BufReadPost * call setpos(".", getpos("'\"")) augroup END " when not running in a console or a terminal that doesn't support 256 colors " enable cursorline in the currently active window and disable it in inactive ones if $DISPLAY !=? '' && &t_Co == 256 augroup cursorline autocmd! autocmd VimEnter,WinEnter,BufWinEnter * setlocal cursorline autocmd WinLeave * setlocal nocursorline augroup END endif " when entering insert mode, relative line " numbers are turned off, leaving absolute line numbers turned on augroup numbertoggle autocmd! autocmd BufEnter,FocusGained,InsertLeave * set number relativenumber autocmd BufLeave,FocusLost,InsertEnter * set number norelativenumber augroup END hi clear CursorLine augroup CLClear autocmd! ColorScheme * hi clear CursorLine augroup END hi CursorLineNR cterm=bold augroup CLNRSet set cursorline autocmd! ColorScheme * hi CursorLineNR cterm=bold augroup END " define indent-based folding, after loading a file switch to manual folding augroup vimrc au BufReadPre * setlocal foldmethod=indent au BufWinEnter * if &fdm == 'indent' | setlocal foldmethod=manual | endif augroup END " autosave and load views au BufWinLeave ?* mkview au BufWinEnter ?* silent loadview au FileType xml setlocal shiftwidth=2 tabstop=2 au FileType c setl ofu=ccomplete#CompleteCpp au BufNewFile,BufRead *.py,*.pyw,*.pyx,?akefil* \ setlocal tabstop=4 shiftwidth=4 noexpandtab autoindent \ textwidth=79 fileformat=unix " Linux kernel style tabs au BufNewFile,BufRead *.c,*.h,*.cpp \ setlocal tabstop=8 shiftwidth=8 softtabstop=8 noexpandtab autoindent \ textwidth=79 fileformat=unix " ------ adv maps ------ " strip trailing whitespace, ss (strip space) nnoremap ss \ :let b:_p = getpos(".") \ let b:_s = (@/ != '') ? @/ : '' \ %s/\s\+$//e \ let @/ = b:_s \ nohlsearch \ unlet b:_s \ call setpos('.', b:_p) \ unlet b:_p set softtabstop=4 set tabstop=4 set shiftwidth=4 set expandtab set smarttab set errorformat+=%.%#PHP:\ %m\ \(in\ %f\ on\ line\ %l\)%.%#, \%E%[0-9]%#.%m:%f?rev=%.%##L%l\ %.%#,%C%.%# autocmd BufNewFile,BufRead svn-commit.*tmp :0r $SVN_COMMIT_TEMPLATE set tags=tags;/ set incsearch " incrimental search set hlsearch " highlighting when searching filetype indent plugin off set autoindent set backspace=2 set nolist " show/hide tabs and EOL chars (hidden characters) set number " show/hide line numbers (nu/nonu) set relativenumber " use relative number set confirm " ask confirmation like save before quit. set wildmenu " Tab completion menu when using command mode set scrolloff=5 " scroll offset, min lines above/below cursor "set scrolljump=5 " jump 5 lines when running out of the screen - NO set sidescroll=10 " minimum columns to scroll horizontally set showcmd " show command status set showmatch " flashes matching parenthese when cursor over the other one set showmode " show editing mode in status (-- INSERT --) set ruler " show cursor position set errorbells " bells in terminal set undolevels=1000 " number of undos stored set viminfo='50,"50 " '=marks for x files, "=registers for x files set nofoldenable "set foldmethod=indent " indent based folding set encoding=utf-8 " important for powerline besides others set smartcase " override 'ignorecase' when pattern has upper case characters vmap gb :!git blame % -L=line("'<") ,=line("'>") nmap gb :!git blame % colo palenight " new fav highlighting set mouse=a " enable mouse in n,v,i,c,h modes set laststatus=2 " show powerline status bar set t_Co=256 let g:Powerline_symbols = "fancy" " sth like this probably set as a default but won't hurt here