" -- BEGIN: Vundle config -- 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() " 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. " Displays git information in airline. Plugin 'tpope/vim-fugitive' Plugin 'Raimondi/delimitMate' " Autocompletion Plugin 'Valloric/YouCompleteMe' " Displays git-tracked C*UD ops within gutter. Plugin 'airblade/vim-gitgutter' Plugin 'kien/ctrlp.vim' Plugin 'mileszs/ack.vim' Plugin 'pangloss/vim-javascript' Plugin 'scrooloose/nerdtree' Plugin 'scrooloose/syntastic' " Syntax Highlighting Support Plugin 'lambdatoast/elm.vim' " Themes Plugin 'sickill/vim-monokai' Plugin 'altercation/vim-colors-solarized' " Executes shell commands and pipes output into new Vim buffer. Plugin 'sjl/clam.vim' " Multiple cursors for simultaneous edits. " NOTE: use to run miltiple cursors not Plugin 'terryma/vim-multiple-cursors' " Visualize buffers Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' call vundle#end() " required filetype plugin indent on " required " Put your non-Plugin stuff after this line " -- END: Vundle config -- " Airline Settings " Enables the list of buffers. let g:airline#extensions#tabline#enabled = 1 " Shows the filename only. let g:airline#extensions#tabline#fnamemod = ':t' " Allow glyphs in airline let g:airline_powerline_fonts = 1 " It's the twenty-first century...no swaps. set noswapfile " Allow visual tab completion in command mode set wildmenu " Show Vim commands as they're being input. set showcmd " Code folding set foldmethod=indent set foldnestmax=10 set nofoldenable set foldlevel=4 " Use relative line numbers set relativenumber " Opens all folds within the buffer nnoremap ZZ zR " Closes all folds within the buffer nnoremap zz zM " Opens all folds beneath the cursor " NOTE: j is the character to go down nnoremap zJ zO " Opens single fold beneath the cursor " NOTE: j is the character to go down nnoremap zj zo " Opens single fold beneath the cursor " NOTE: k is the character to go down nnoremap zK zC " Opens single fold beneath the cursor " NOTE: k is the character to go down nnoremap zk zc " Changes to character. let mapleader = " " " Supports mouse interaction. set mouse=a " Highlights matches during a search. set hlsearch nnoremap / :set hlsearch! " Use custom-made snippets. nnoremap ,jsfn :-1read $HOME/.vim/function_skeleton.jso " backspace settings set backspace=2 set backspace=indent,eol,start " Javascript specific variables let g:javascript_plugin_jsdoc = 1 " GlobalListchars set list set listchars=eol:¶,trail:~,nbsp:␣ " Keeps everything concealed at all times. Even when cursor is on the word. set conceallevel=1 set concealcursor=nvic " JavaScript thanks to pangloss/vim-javascript " let g:javascript_conceal_function = "ƒ" " match ErrorMsg /ƒ/ " Ultisnips " Track the engine. Plugin 'SirVer/ultisnips' " Snippets are separated from the engine. Add this if you want them: Plugin 'honza/vim-snippets' " Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. let g:UltiSnipsExpandTrigger="" " let g:UltiSnipsJumpForwardTrigger="" " let g:UltiSnipsJumpBackwardTrigger="" " map jk to inoremap jk " Conventional Emacs line-editor defaults inoremap I inoremap A " Manage Vertical and Horizontal splits nnoremap vs :vs nnoremap vv :vs nnoremap sp :sp nnoremap ss :sp " Move around splits with nnoremap h h nnoremap j j nnoremap k k nnoremap l l nnoremap q q " Fuzzy-find open buffer via CtrlP nnoremap bg :CtrlPBuffer " Buffer creation and management " Buffer movement nnoremap :1bnext nnoremap :1bprevious " Buffer creation nnoremap :enew " Buffer deletion nnoremap bq :bp bd # " make Y do what is intuitive given: " D: deletes until EOL " C: changes until EOL " Y: (should) yank until EOL nnoremap Y y$ " flip number keys to their shift+ counterparts nnoremap t1 t! nnoremap t2 t@ nnoremap t3 t# nnoremap t4 t$ nnoremap t5 t% nnoremap t6 t^ nnoremap t7 t& nnoremap t8 t* nnoremap t9 t( nnoremap t0 t) nnoremap T1 T! nnoremap T2 T@ nnoremap T3 T# nnoremap T4 T$ nnoremap T5 T% nnoremap T6 T^ nnoremap T7 T& nnoremap T8 T* nnoremap T9 T( nnoremap T0 T) nnoremap f1 f! nnoremap f2 f@ nnoremap f3 f# nnoremap f4 f$ nnoremap f5 f% nnoremap f6 f^ nnoremap f7 f& nnoremap f8 f* nnoremap f9 f( nnoremap f0 f) nnoremap F1 F! nnoremap F2 F@ nnoremap F3 F# nnoremap F4 F$ nnoremap F5 F% nnoremap F6 F^ nnoremap F7 F& nnoremap F8 F* nnoremap F9 F( nnoremap F0 F) " Karate edits nnoremap ca9 ca( nnoremap da9 da( nnoremap va9 va( nnoremap ca0 ca) nnoremap da0 da) nnoremap va0 va) nnoremap ci9 ci( nnoremap di9 di( nnoremap vi9 vi( nnoremap ci0 ci) nnoremap di0 di) nnoremap vi0 vi) " scrolling and maintaing mouse position nnoremap j nnoremap k " reload file after git changes nnoremap :e " -- Syntastic Settings -- set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 1 let g:syntastic_javascript_checkers = ['gjslint'] " Basic settings set number set tabstop=2 set expandtab set shiftwidth=2 syntax enable set background=dark colorscheme solarized set t_Co=255 " Support italics highlight Comment cterm=italic " Define highlighting groups " NOTE: The ANSII aliases for colors will change when iTerm2 settings are " changed. highlight InterestingWord1 ctermbg=Magenta ctermfg=Black highlight InterestingWord2 ctermbg=Blue ctermfg=Black " h1 highlighting nnoremap 1 :execute '2match InterestingWord1 /\<\>/' nnoremap x1 :execute '2match none' " h2 highlighting nnoremap 2 :execute '3match InterestingWord2 /\<\>/' nnoremap x2 :execute '3match none' "clear all highlighted groups nnoremap xx :execute '2match none' :execute '3match none' hh " pasteboard copy & paste nnoremap V"+y vnoremap "+y inoremap "+pa nnoremap o"+p vnoremap "+p " Manage 80 char line limits highlight OverLength ctermbg=White ctermfg=Black match OverLength /\%81v.\+/ set wrap! " Toggle word-wrapping nnoremap w :set wrap! " Resize split to 10,20,...,100 chars " Uncomment the next lines for support at those sizes. " These bindings interfere with the highlight groups, however. " Increases the width of a vertical split. " nnoremap 1 :vertical resize 10 " nnoremap 2 :vertical resize 20 nnoremap 3 :vertical resize 30 nnoremap 4 :vertical resize 40 nnoremap 5 :vertical resize 50 nnoremap 6 :vertical resize 60 nnoremap 7 :vertical resize 70 nnoremap 8 :vertical resize 80 nnoremap 9 :vertical resize 90 nnoremap 0 :vertical resize 100 " Increases the height of a horizontal split. nnoremap v1 :resize 5 nnoremap v2 :resize 10 nnoremap v3 :resize 15 nnoremap v4 :resize 20 nnoremap v5 :resize 25 nnoremap v6 :resize 30 nnoremap v7 :resize 35 nnoremap v8 :resize 40 " NERDTree settings " Show hidden files by default. (Toggle with capital 'i') let NERDTreeShowHidden=1 " View Directory tree with ctrl + \ nnoremap :NERDTreeToggle " View open buffer location in tree. nnoremap :NERDTreeFind " BOL and EOL nnoremap H ^ vnoremap H ^ nnoremap L $ vnoremap L $ " trim trailing whitespace on save autocmd BufWritePre *.{js,py,tpl,less,html} :%s/\s\+$//e " set default font and size set guifont=Operator\ Mono:h16 " CtrlP Config. set runtimepath^=~/.vim/bundle/ctrlp.vim " let g:ctrlp_map = '' let g:ctrlp_cmd = 'CtrlP' " Maps CtrlP to leader to future-proof config. nnoremap p :CtrlP " Fuzzy-finds files within cwd. " nnoremap pf :CtrlP " Ignores dirs and files let g:ctrlp_custom_ignore = { \ 'dir': 'node_modules', \ 'file': '\v\.(exe|dll|png|jpg|jpeg)$' \}