""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " preamble " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nocompatible " Needed for vundle, will be turned on after vundle inits filetype off " Setup vundle set rtp+=~/.vim/bundle/vundle/ call vundle#rc() """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Vundle configuration " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " These need to come before the configuration options for the plugins since " vundle will add the plugin folders to the runtimepath only after it has seen " the plugin's Bundle command. Bundle 'FSwitch' Bundle 'FuzzyFinder' Bundle 'JesseKPhillips/d.vim' Bundle 'L9' Bundle 'Lokaltog/vim-easymotion' Bundle 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim'} Bundle 'Raimondi/delimitMate' Bundle 'Rename' Bundle 'SirVer/ultisnips' Bundle 'Valloric/ListToggle' Bundle 'Valloric/MatchTagAlways' Bundle 'Valloric/Vim-Jinja2-Syntax' Bundle 'Valloric/python-indent' Bundle 'Valloric/vim-indent-guides' " Requires extra binaries; see docs Bundle 'Valloric/vim-instant-markdown' Bundle 'Valloric/vim-operator-highlight' Bundle 'Valloric/vim-valloric-colorscheme' Bundle 'Valloric/xmledit' Bundle 'YankRing.vim' " Seems more active than tpope/vim-surround Bundle 'anyakichi/vim-surround' Bundle 'bufkill.vim' " requires compilation Bundle 'git://git.wincent.com/command-t.git' Bundle 'gmarik/vundle' Bundle 'godlygeek/tabular' Bundle 'groenewege/vim-less' Bundle 'hail2u/vim-css3-syntax' Bundle 'helino/vim-json' Bundle 'majutsushi/tagbar' Bundle 'matchit.zip' Bundle 'matthias-guenther/hammer.vim' Bundle 'mattn/zencoding-vim' Bundle 'michaeljsmith/vim-indent-object' Bundle 'mileszs/ack.vim' Bundle 'othree/html5.vim' Bundle 'python.vim' Bundle 'python_match.vim' Bundle 'scrooloose/nerdtree' Bundle 'scrooloose/syntastic' Bundle 'sjl/gundo.vim' " Problems with fugitive, re-evalute when upstream fixes the issue " Bundle 'sjl/splice.vim' Bundle 'skammer/vim-css-color' Bundle 'tomtom/tcomment_vim' Bundle 'tomtom/tlib_vim' Bundle 'tpope/vim-fugitive' Bundle 'tpope/vim-git' Bundle 'tpope/vim-markdown' Bundle 'tpope/vim-repeat' Bundle 'xolox/vim-notes' Bundle 'xolox/vim-pyref' Bundle 'xolox/vim-session' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " pre-filetype tweaks " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " these are for the xmledit plugin let xml_use_xhtml = 1 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " reset vimrc augroup " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " We reset the vimrc augroup. Autocommands are added to this group throughout " the file augroup vimrc autocmd! augroup END """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " turn on filetype plugins " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Enable detection, plugins and indenting in one step " This needs to come AFTER the Bundle commands! filetype plugin indent on """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " General settings " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " for testing out custom vim scripts set rtp+=$HOME/vim_test,$HOME/vim_test/after,$HOME/repos/YouCompleteMe " Home away from home. We store some config files and snippets here and the " whole dotfiles dir is a git repo. Should be the last entry in rtp (for " UltiSnips). set rtp+=$HOME/dotfiles/vim " We want our cross-machine spell file to be used set spellfile=$HOME/dotfiles/vim/spell/en.latin1.add " TODO: transfer all our custom mapping to our vim_shortcuts file " DISPLAY SETTINGS colorscheme valloric " sets the colorscheme set background=dark " enable for dark terminals set scrolloff=2 " 2 lines above/below cursor when scrolling set showmatch " show matching bracket (briefly jump) set matchtime=2 " reduces matching paren blink time from the 5[00]ms def set showmode " show mode in status bar (insert/replace/...) set showcmd " show typed command in status bar set ruler " show cursor position in status bar set title " show file in titlebar set undofile " stores undo state even when files are closed (in undodir) set cursorline " highlights the current line set winaltkeys=no " turns of the Alt key bindings to the gui menu " When you type the first tab, it will complete as much as possible, the second " tab hit will provide a list, the third and subsequent tabs will cycle through " completion options so you can complete the file without further keys set wildmode=longest,list,full set wildmenu " completion with menu " This changes the default display of tab and CR chars in list mode set listchars=tab:▸\ ,eol:¬ " The "longest" option makes completion insert the longest prefix of all " the possible matches; see :h completeopt set completeopt=menu,menuone,longest set switchbuf=useopen,usetab " EDITOR SETTINGS set ignorecase " case insensitive searching set smartcase " but become case sensitive if you type uppercase characters " this can cause problems with other filetypes " see comment on this SO question http://stackoverflow.com/questions/234564/tab-key-4-spaces-and-auto-indent-after-curly-braces-in-vim/234578#234578 "set smartindent " smart auto indenting set autoindent " on new lines, match indent of previous line set copyindent " copy the previous indentation on autoindenting set cindent " smart indenting for c-like code set cino=b1,g0,N-s,t0,(0,W4 " see :h cinoptions-values set smarttab " smart tab handling for indenting set magic " change the way backslashes are used in search patterns set bs=indent,eol,start " Allow backspacing over everything in insert mode set nobackup " no backup~ files. set tabstop=2 " number of spaces a tab counts for set shiftwidth=2 " spaces for autoindents set softtabstop=2 set shiftround " makes indenting a multiple of shiftwidth set expandtab " turn a tab into spaces set laststatus=2 " the statusline is now always shown " misc settings set fileformat=unix " file mode is unix set fileformats=unix,dos,mac " detects unix, dos, mac file formats in that order set viminfo='20,\"500 " remember copy registers after quitting in the .viminfo " file -- 20 jump links, regs up to 500 lines' set hidden " allows making buffers hidden even with unsaved changes set history=1000 " remember more commands and search history set undolevels=1000 " use many levels of undo set autoread " auto read when a file is changed from the outside set mouse=a " enables the mouse in all modes " toggles vim's paste mode; when we want to paste something into vim from a " different application, turning on paste mode prevents the insertion of extra " whitespace set pastetoggle= " Right-click on selection should bring up a menu set mousemodel=popup_setpos " With this, the gui (gvim and macvim) now doesn't have the toolbar, the left " and right scrollbars and the menu. set guioptions-=T set guioptions-=l set guioptions-=L set guioptions-=r set guioptions-=R set guioptions-=m set guioptions-=M " this makes sure that shell scripts are highlighted " as bash scripts and not sh scripts let g:is_posix = 1 " tries to avoid those annoying "hit enter to continue" messages " if it still doesn't help with certain commands, add a second " at the end of the map command set shortmess=a " this solves the "unable to open swap file" errors on Win7 set dir=~/tmp,/var/tmp,/tmp,$TEMP set undodir=~/tmp,/var/tmp,/tmp,$TEMP " Look for tag def in a "tags" file in the dir of the current file, then for " that same file in every folder above the folder of the current file, until the " root. set tags=./tags;/ " turns off all error bells, visual or otherwise set noerrorbells visualbell t_vb= autocmd vimrc GUIEnter * set visualbell t_vb= " Switch syntax highlighting on, when the terminal has colors if &t_Co > 2 || has("gui_running") syntax on endif " none of these should be word dividers, so make them not be set iskeyword+=_,$,@,%,# " Number of screen lines to use for the command-line set cmdheight=2 " allow backspace and cursor keys to cross line boundaries set whichwrap+=<,>,h,l set nohlsearch " do not highlight searched-for phrases set incsearch " ...but do highlight-as-I-type the search string set gdefault " this makes search/replace global by default " enforces a specified line-length and auto inserts hard line breaks when we " reach the limit; in Normal mode, you can reformat the current paragraph with " gqap. set textwidth=80 " this makes the color after the textwidth column highlighted set colorcolumn=+1 " options for formatting text; see :h formatoptions set formatoptions=tcroqn " The alt (option) key on macs now behaves like the 'meta' key. This means we " can now use or similar as maps. This is buffer local, and it can easily " be turned off when necessary (for instance, when we want to input special " characters) with :set nomacmeta. if has("gui_macvim") set macmeta endif " UltiSnips is missing a setf trigger for snippets on BufEnter autocmd vimrc BufEnter *.snippets setf snippets " In UltiSnips snippet files, we want actual tabs instead of spaces for indents. " US will use those tabs and convert them to spaces if expandtab is set when the " user wants to insert the snippet. autocmd vimrc FileType snippets set noexpandtab let google_path = $HOME . '/google/google_vim_settings.vim' if filereadable( google_path ) let at_google = 1 else let at_google = 0 endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " More involved tweaks " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Unicode support (taken from http://vim.wikia.com/wiki/Working_with_Unicode) if has("multi_byte") if &termencoding == "" let &termencoding = &encoding endif set encoding=utf-8 setglobal fileencoding=utf-8 set fileencodings=ucs-bom,utf-8,latin1 endif augroup vimrc " When editing a file, always jump to the last known cursor position. " Don't do it when the position is invalid or when inside an event handler " (happens when dropping a file on gvim). " Also don't do it when the mark is in the first line, that is the default " position when opening a file. autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") && !&diff | \ exe "normal! g`\"" | \ endif " Automatically delete trailing DOS-returns and whitespace on file open and " write. autocmd BufRead,BufWritePre,FileWritePre * silent! %s/[\r \t]\+$// augroup END " this maximizes the gvim window on startup if has("gui_win32") " this maximizes on windows au vimrc GUIEnter * simalt ~x else " We never maximize in macvim. We rely on it remembering the window size " itself. if !has("gui_macvim") au vimrc GUIEnter * set lines=999 columns=999 endif endif " Sets a font for the GUI if has("gui_gtk2") set guifont=Consolas\ For\ Powerline\ 11 elseif has("gui_macvim") " My Mac has a fairly high DPI so the font needs to be bigger set guifont=Consolas\ For\ Powerline:h14 elseif has("gui_win32") set guifont=Consolas\ For\ Powerline:h11 end " Convenient command to see the difference between the current buffer and the " file it was loaded from, thus the changes you made. command! DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis \ | wincmd p | diffthis " Sometimes, $MYVIMRC does not get set even though the vimrc is sourced " properly. So far, I've only seen this on Linux machines on rare occasions. if has("unix") && strlen($MYVIMRC) < 1 let $MYVIMRC=$HOME . '/.vimrc' endif " Highlight Class and Function names function! s:HighlightFunctionsAndClasses() syn match cCustomFunc "\w\+\s*\((\)\@=" syn match cCustomClass "\w\+\s*\(::\)\@=" hi def link cCustomFunc Function hi def link cCustomClass Function endfunction " Highlight Class and Function names, D specific function! s:HighlightDFunctionsAndClasses() syn match cCustomDFunc "\w\+\s*\(!.\{-}(\)\@=" syn match cCustomDFuncUFCS ".\w\+\s*\(!.\{-}\)\@=" hi def link cCustomDFunc Function hi def link cCustomDFuncUFCS Function endfunction " TODO: this should: " a) not be called for every filetype " b) be in a separate plugin au vimrc Syntax * call s:HighlightFunctionsAndClasses() au vimrc Syntax d call s:HighlightDFunctionsAndClasses() " TODO: split this into separate plugin function! VisualSearch(direction) range let l:saved_reg = @" execute "normal! vgvy" let l:pattern = escape(@", '\\/.*$^~[]') let l:pattern = substitute(l:pattern, "\n$", "", "") if a:direction == 'b' execute "normal ?" . l:pattern . "^M" elseif a:direction == 'gv' execute "Ack " . l:pattern . ' %' elseif a:direction == 'f' execute "normal /" . l:pattern . "^M" endif let @/ = l:pattern let @" = l:saved_reg endfunction "Basically you press * or # to search for the current selection vnoremap * :call VisualSearch('f') vnoremap # :call VisualSearch('b') vnoremap gv :call VisualSearch('gv') " cindent is a bit too smart for its own good and triggers in text files when " you're typing inside parens and then hit enter; it aligns the text with the " opening paren and we do NOT want this in text files! autocmd vimrc FileType text,markdown set nocindent autocmd vimrc FileType markdown setlocal spell! spelllang=en_us """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " custom mappings " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " NOTE: a lot of these mappings won't make sense until you realize I'm using a " "Dvorak-Qwerty Command" layout (and similar on Win/Lin). The layout is Dvorak " unless you hold down Ctrl or Alt or Cmd; then it changes to Qwerty. This type " of layout gives us Dvorak typing but Qwerty keyboard shortcuts. " our will be the space key let mapleader=" " " our will be the '-' key let maplocalleader="-" " this makes vim's regex engine "not stupid" " see :h magic nnoremap / /\v vnoremap / /\v " With this map, we can select some text in visual mode and by invoking the map, " have the selection automatically filled in as the search text and the cursor " placed in the position for typing the replacement text. Also, this will ask " for confirmation before it replaces any instance of the search text in the " file. vnoremap "hy:%s/h//c " Fast saving nnoremap w :w! " v brings up .vimrc " V reloads it and makes all changes active (file has to be saved first) noremap v :e! $MYVIMRC noremap V :source $MYVIMRC:filetype detect:exe ":echo 'vimrc reloaded'" " with this, we can now type ",." to exit out of insert mode " if we really wanted to type ",.", then just type one char, wait half a sec, " type another inoremap ,. vnoremap ,. " CTRL-U and CTRL-W in insert mode cannot be undone. Use CTRL-G u to first " break undo, so that we can undo those changes after inserting a line break. " For more info, see: http://vim.wikia.com/wiki/Recover_from_accidental_Ctrl-U inoremap u inoremap u " This command will allow us to save a file we don't have permission to save " *after* we have already opened it. Super useful. cnoremap w!! w !sudo tee % >/dev/null " Swap implementations of ` and ' jump to markers " By default, ' jumps to the marked line, ` jumps to the marked line and " column, so swap them nnoremap ' ` nnoremap ` ' " g is jump to tag if there's only one matching tag, but show list of " options when there is more than one definition nnoremap g g " These create newlines like o and O but stay in normal mode nnoremap zj ok nnoremap zk Oj " Now we don't have to move our fingers so far when we want to scroll through " the command history; also, don't forget the q: command (see :h q: for more " info) cnoremap cnoremap " Keep search matches in the middle of the window. " zz centers the screen on the cursor, zv unfolds any fold if the cursor " suddenly appears inside a fold. nnoremap * *zzzv nnoremap # #zzzv nnoremap n nzzzv nnoremap N Nzzzv " Also center the screen when jumping through the changelist nnoremap g; g;zz nnoremap g, g,zz " In normal mode, we use : much more often than ; so lets swap them. " WARNING: this will cause any "ordinary" map command without the "nore" prefix " that uses ":" to fail. For instance, "map :w" would fail, since vim will " read ":w" as ";w" because of the below remappings. Use "noremap"s in such " situations and you'll be fine. nnoremap ; : nnoremap : ; vnoremap ; : vnoremap : ; " This makes j and k work on "screen lines" instead of on "file lines"; now, when " we have a long line that wraps to multiple screen lines, j and k behave as we " expect them to. nnoremap j gj nnoremap k gk " Use Q for formatting the current paragraph (or visual selection) vnoremap Q gq nnoremap Q gqap " This is quit all noremap q :qa " key bindings for quickly moving between windows " h left, l right, k up, j down noremap h h noremap l l noremap k k noremap j j " for faster scrolling " TODO: create a command for scrolling by ~70% of the window height noremap 15gj noremap 15gk " on macs the alt key is inconvenient to press, so let's also map to ctrl noremap 15gj noremap 15gk " Switches to the previous buffer that was shown in the current window, but also " closes the current buffer before switching to the previous one noremap bq :bd # " Switch to the directory of the open buffer noremap cd :cd %:p:h " Toggle and untoggle spell checking noremap ss :setlocal spell! spelllang=en_us " spelling shortcuts using " ]s next misspelled word " [s previous misspelled word " zg add to dict " z= get suggestions noremap sn ]s noremap sp [s noremap sa zg noremap su z= " Using '<' and '>' in visual mode to shift code by a tab-width left/right by " default exits visual mode. With this mapping we remain in visual mode after " such an operation. vnoremap < >gv """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " *** HERE BE PLUGINS *** " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " BufExplorer " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" noremap o :BufExplorer """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Command-T " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:CommandTMaxHeight = 30 let g:CommandTMatchWindowReverse = 1 " shows results in reverse order " MacVim doesn't use tab focus to switch from command-t input field to the file " list, so using j and k for next and prev screws everything up. But it does " work on linux so let's use it there. if has("gui_gtk2") let g:CommandTSelectNextMap = [ '' ] let g:CommandTSelectPrevMap = [ '' ] endif set wildignore+=*.o,*.obj,.git,*.pyc,*.so,blaze*,READONLY,llvm,Library*,CMakeFiles nnoremap t :CommandT nnoremap n :CommandTBuffer nnoremap ' :CommandTFlush """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Gundo " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " f5 toggles the Gundo plugin window nnoremap :GundoToggle let g:gundo_width=80 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " NERDTree " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " toggles the nerdtree window nnoremap :NERDTreeToggle " This makes the dir of the current file the root of the nerdtree; " in effect, it re-centers the nerdtree on the current file's folder. nnoremap :NERDTreeFind """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " yankring " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:yankring_history_dir = '$HOME/tmp/vim' " this is so that single char deletes don't end up in the yankring let g:yankring_min_element_length = 2 let g:yankring_window_height = 14 nnoremap r :YRShow " this makes Y yank from the cursor to the end of the line, which makes more " sense than the default of yanking the whole current line (we can use yy for " that) function! YRRunAfterMaps() nnoremap Y :YRYankCount 'y$' endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " session " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " you also need to run :SaveSession once to create the default.vim session that " will then be autoloaded/saved from then on let g:session_autoload = 'yes' let g:session_autosave = 'yes' let g:session_default_to_last = 'yes' let g:session_directory = '~/tmp/vim/sessions' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " tabular " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " looks at the current line and the lines above and below it and aligns all the " equals signs; useful for when we have several lines of declarations nnoremap a= :Tabularize /= vnoremap a= :Tabularize /= """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " UltiSnips " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " we can't use as our snippet key since we use that with neocomplcache let g:UltiSnipsSnippetsDir = $HOME . '/dotfiles/vim/UltiSnips' let g:UltiSnipsExpandTrigger = "" let g:UltiSnipsListSnippets = "" let g:UltiSnipsJumpForwardTrigger = "" let g:UltiSnipsJumpBackwardTrigger = "" let g:snips_author = 'Strahinja Val Markovic' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " easymotion " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:EasyMotion_leader_key = 'e' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " hammer " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " This makes sure that the browser is opened in the background if has("gui_macvim") let g:HAMMER_BROWSER_ARGS = '-g' endif nnoremap m :w:Hammer """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " ack.vim " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if executable('ag') let g:ackprg = "ag --nocolor --nogroup --column" elseif executable('ack-grep') let g:ackprg = "ack-grep --nocolor --nogroup --column" elseif executable('ack') let g:ackprg = "ack --nocolor --nogroup --column" endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " ListToggle " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:lt_location_list_toggle_map = 'i' let g:lt_quickfix_list_toggle_map = 'u' let g:lt_height = 25 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " bufkill " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Use the arrows for something useful " :BB switches to the previous buffer shown in the current window, :BF switches " to the next one; it's like a buffer history for every window noremap :BF noremap :BB """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " fuzzyfinder " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " This turns on the mrufile and mrucmd modes let g:fuf_modesDisable = [] let g:fuf_mrufile_maxItem = 1000 let g:fuf_mrucmd_maxItem = 400 let g:fuf_file_exclude = '\v\~$|\.(o|exe|dll|bak|class|meta|lock|orig|jar|swp)$|/test/data\.|(^|[/\\])\.(hg|git|bzr)($|[/\\])' nnoremap fm :FufMruFile nnoremap fc :FufMruCmd """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " fswitch " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " A "companion" file is a .cpp file to an .h file and vice versa " Opens the companion file in the current window nnoremap sh :FSHere " Opens the companion file in the window to the left (window needs to exist) " This is actually a duplicate of the :FSLeft command which for some reason " doesn't work. nnoremap sl :call FSwitch('%', 'wincmd l') " Same as above, only opens it in window to the right nnoremap sr :call FSwitch('%', 'wincmd r') " Creates a new window on the left and opens the companion file in it nnoremap sv :FSSplitLeft " This handles c++ files with the ".cc" extension. augroup googleccfiles au! au BufEnter *.cc let b:fswitchdst = 'h,hxx' au BufEnter *.cc let b:fswitchlocs = './,reg:/src/include/,reg:|src|include/**|,../include' if !at_google au BufEnter *.h let b:fswitchdst = 'cpp,cc,c' else au BufEnter *.h let b:fswitchdst = 'cc,cpp,c' endif au BufEnter *.h let b:fswitchlocs = './,reg:/include/src/,reg:/include.*/src/,../src' augroup END """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vim-git " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Turn on spell checking by default for git commit messages au vimrc FileType gitcommit setlocal spell! spelllang=en_us """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " tagbar " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:tagbar_left = 1 let g:tagbar_sort = 0 if has("gui_macvim") let g:tagbar_ctags_bin = '/usr/local/bin/ctags' endif nnoremap :TagbarToggle= """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vimpager " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vimpager is actually not a plugin but a shell file " https://github.com/rkitover/vimpager let vimpager_use_gvim = 1 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " delimitMate " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au vimrc FileType html,xhtml,markdown let b:delimitMate_matchpairs = "(:),[:],{:}" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vim-css-color " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:cssColorVimDoNotMessMyUpdatetime = 1 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " zencoding-vim " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:user_zen_leader_key = '' let g:user_zen_settings = { \ 'indentation' : ' ' \} """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vim-notes " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:notes_directories = ['~/notes'] """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " syntastic " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:syntastic_error_symbol = '✗' let g:syntastic_warning_symbol = '⚠' let g:syntastic_always_populate_loc_list = 1 let g:syntastic_python_checkers = ['pyflakes'] """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " YouCompleteMe " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:ycm_autoclose_preview_window_after_completion = 1 let g:ycm_extra_conf_globlist = ['~/repos/*'] let g:ycm_filetype_specific_completion_to_disable = {'javascript': 1} nnoremap y :YcmForceCompileAndDiagnostics nnoremap pg :YcmCompleter GoToDefinitionElseDeclaration nnoremap pd :YcmCompleter GoToDefinition nnoremap pc :YcmCompleter GoToDeclaration """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vim-indent-guides " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:indent_guides_enable_on_vim_startup = 1 let g:indent_guides_color_change_percent = 7 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " MatchTagAlways " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:mta_use_matchparen_group = 0 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " VIMRC OVERRIDE " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " If we are at our google workstation, then do some things differently if at_google " let g:ycm_filetype_specific_completion_to_disable = {'cpp': 1, 'c': 1} exec 'source ' . google_path endif