" set x=y {{{ " au BufWinEnter * set relativenumber " set background=dark set background=light " set t_Co=256 filetype plugin on syntax on set tabstop=4 set tw=80 set linebreak " set colorcolumn=80 set shiftwidth=4 set autoindent set mouse=c set clipboard+=unnamedplus set foldmethod=marker set linespace=5 " set listchars=tab:\|\ " set list " set cursorcolumn " set cursorline set timeoutlen=500 set hlsearch " }}} set x=y " autocmd VimResized * wincmd = autocmd BufNewFile,BufRead .* set syntax=sh " vim-plug {{{ " " plug auto-install 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('~/.vim/plugged') " prequisite for other plugins Plug 'vim-scripts/L9' " find files from within Vim " Plug 'vim-scripts/FuzzyFinder' " Gotham color scheme " Plug 'whatyouhide/vim-gotham' " collection of Vim color schemes Plug 'flazz/vim-colorschemes' " preview Vim color scheme easily within Vim Plug 'xolox/vim-colorscheme-switcher' " prerequisite for above plugin Plug 'xolox/vim-misc' " automatically save buffers upon returning to normal mode Plug '907th/vim-auto-save' let g:auto_save = 1 " compile LaTeX PDF while writing the file " Plug 'xuhdev/vim-latex-live-preview', { 'for': 'tex' } " provides various functionality for writing LaTeX in Vim Plug 'lervag/vimtex' au BufWritePost *.tex silent call Tex_RunLaTeX() au BufWritePost *.tex silent !pkill -USR1 xdvi.bin let g:vimtex_view_general_viewer = 'okular' " auto-completion for various languages " Plug 'Valloric/YouCompleteMe' " wrote short bits of text that expand into whatever you want " demo: https://www.youtube.com/watch?v=Zik6u0klD40 " Plug 'SirVer/ultisnips' " better key bindings for UltiSnipsExpandTrigger " let g:UltiSnipsExpandTrigger = "<tab>" " let g:UltiSnipsJumpForwardTrigger = "<tab>" " let g:UltiSnipsJumpBackwardTrigger = "<C-tab>" " custom snippets " Plug 'Kevin-Mok/vim-snippets' " to make YouCompleteMe work with UltiSnips (both use Tab) " Plug 'ervandew/supertab' " make YCM compatible with UltiSnips (using supertab) " let g:ycm_key_list_select_completion = ['<C-n>', '<Down>'] " let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>'] " let g:SuperTabDefaultCompletionType = '<C-n>' " easily comment/uncomment lines Plug 'scrooloose/nerdcommenter' let g:NERDTrimTrailingWhitespace = 1 let g:NERDSpaceDelims = 1 " add quotes/brackets around chunks of text easily Plug 'tpope/vim-surround' " navigate around file easily and precisely Plug 'easymotion/vim-easymotion' " status bar displaying various info about the current buffer Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' let g:airline_powerline_fonts = 1 " continue Markdown lists when started Plug 'dkarter/bullets.vim' " coordinate Vim color scheme with terminal color scheme Plug 'dylanaraps/wal.vim' " repeat plugin commands Plug 'tpope/vim-repeat' call plug#end() " colorscheme gotham256 colorscheme wal " }}} vim-plug " " Mappings {{{ " " function keys {{{ " " map <F3> :wa<CR> map <F4> :wqa<CR> map <F5> :qa!<CR> map <F6> :make -C ~/Documents/resume cv<CR> map <F7> :AutoSaveToggle<CR> " map <F9> :LLPStartPreview<CR> map <F9> :VimtexCompile<CR>:VimtexView<CR> nnoremap <F10> :set paste<CR>"+p:set nopaste<CR> " }}} function keys " map <S-Enter> O<ESC> " splits {{{ " nnoremap <C-Down> <C-W><C-J> nnoremap <C-Up> <C-W><C-K> nnoremap <C-Right> <C-W><C-L> nnoremap <C-Left> <C-W><C-H> " Maximize height/width. nnoremap <C-g> <C-W>_ nnoremap <C-w> <C-W>| " }}} splits " " leader mappings {{{ " let mapleader="\<Space>" " replace vim-commentary Markdown comments with HTML nnoremap <leader>cmt :%s/>\(.*\)>/<!---\1-->/g<CR> " delete line into system clipboard nnoremap <leader>D "+dd " delete entire buffer into system clipboard nnoremap <leader>DA "+ggdG " reload file nnoremap <leader>e :e<CR> " find merge conflicts nnoremap <leader>fc /[<>=]\{7\}<CR> " reload folds nnoremap <leader>ff :set foldmethod=marker<CR> zM " toggle search highlighting nnoremap <leader>h :set hlsearch! hlsearch?<CR> " help nnoremap <leader>he :help nnoremap <leader>vhe :vert help " move cursor to middle of line nnoremap <leader>m :call cursor(0, len(getline('.'))/2)<CR> " don't wrap lines nnoremap <leader>nw :set nowrap<CR> " check if in neovim nnoremap <leader>nv :echo has('nvim')<CR> " Plug commands nnoremap <leader>pli :PlugInstall<CR> nnoremap <leader>plc :PlugClean<CR> nnoremap <leader>plu :PlugUpdate<CR> " don't break lines nnoremap <leader>py :set tw=200<CR> " replace in next x lines nnoremap <leader>r q:i.,.+s///g<ESC>Fsi " replace in line nnoremap <leader>rl q:i.s///g<left><left><left> " reload vim config nnoremap <leader>rv :source $MYVIMRC<CR> " replace in entire file nnoremap <leader>R q:i%s///g<ESC>2F/i " set syntax to shell (for dotfiles) nnoremap <leader>s :set syn=sh<CR> " format current line nnoremap <leader>w Vgq " format this and next line nnoremap <leader>ww Vjgq " toggle fold nnoremap <leader>z za " copy next thing to system clipboard nnoremap <leader>y "+ nnoremap <leader>Y "+Y " }}} leader mappings " " }}} Mappings " " Local Mappings {{{ " let maplocalleader="-" autocmd Filetype c inoremap <localleader>s struct pixel autocmd Filetype tex set tabstop=2 shiftwidth=2 expandtab " tex {{{ " autocmd Filetype tex inoremap <localleader>D \Delta autocmd Filetype tex inoremap <localleader>e \exists autocmd Filetype tex inoremap <localleader>ep \epsilon autocmd Filetype tex inoremap <localleader>fa \forall autocmd Filetype tex inoremap <localleader>g \geq autocmd Filetype tex inoremap <localleader>i \in autocmd Filetype tex inoremap <localleader>l \leq autocmd Filetype tex inoremap <localleader>lr \Leftrightarrow autocmd Filetype tex inoremap <localleader>n \neg autocmd Filetype tex inoremap <localleader>N \mathbb{N} autocmd Filetype tex inoremap <localleader>R \Rightarrow autocmd Filetype tex inoremap <localleader>st such that autocmd Filetype tex inoremap <localleader>t \times autocmd Filetype tex inoremap <localleader>T $T$ " replace bars/underscores in URL autocmd Filetype tex inoremap <localleader>url :.s/\([-_]\)/\\\1/g<CR> autocmd Filetype tex inoremap <localleader>v \vee autocmd Filetype tex inoremap <localleader>w \wedge autocmd Filetype tex inoremap <localleader>x $x$-axis autocmd Filetype tex inoremap <localleader>y $y$-axis autocmd Filetype tex inoremap <localleader>Z \mathbb{Z} " par3 autocmd Filetype tex inoremap <localleader>wx $w(x)$ autocmd Filetype tex inoremap <localleader>tx $t(x)$ " }}} tex " " }}} Local Mappings " " format XML {{{ function! DoPrettyXML() " save the filetype so we can restore it later let l:origft = &ft set ft= " delete the xml header if it exists. This will " permit us to surround the document with fake tags " without creating invalid xml. 1s/<?xml .*?>//e " insert fake tags around the entire document. " This will permit us to pretty-format excerpts of " XML that may contain multiple top-level elements. 0put ='<PrettyXML>' $put ='</PrettyXML>' silent %!xmllint --format - " xmllint will insert an <?xml?> header. it's easy enough to delete " if you don't want it. " delete the fake tags 2d $d " restore the 'normal' indentation, which is one extra level " too deep due to the extra tags we wrapped around the document. silent %< " back to home 1 " restore the filetype exe "set ft=" . l:origft endfunction command! PrettyXML call DoPrettyXML() " }}}