if has("autocmd") " Show trailing white space highlight ExtraWhitespace ctermfg=red ctermbg=red guifg=red guibg=red autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@ .. :edit %:h | \ endif " Fugitive - Delete buffers when they are not active autocmd BufReadPost fugitive://* set bufhidden=delete endif """""""" "" Tabs and Text Formatting """""""""""""""""""""""""""""""""""""""""""""""""""""" set tabstop=2 " actual tab press distance set shiftround " indent to nearest tabstops set shiftwidth=2 " amount to indent with > and < set smarttab " backspace tabs where appropriate even if spaces set softtabstop=2 " let backspace delete by indents set textwidth=80 " try to keep text within 80 characters set colorcolumn=+1 " mark out the limits of the textwidth """""""" "" UI - Mouse & Cursor """""""""""""""""""""""""""""""""""""""""""""""""""""""" set virtualedit=block " Freedom of movement in visual block mode " The following two settings are related to how vim reacts to the incoming $TERM " value from either the terminal emulator (e.g. iTerm2) or tmux. In the best " case, both of these should be set to xterm-256color. This will result in vim " reacting with the settings below: "set ttymouse=xterm2 " Needed to allow mouse support to resize windows "set ttyfast " Allows for instantaneous refresh when using the mouse to select """""""" "" UI - Solarized Fix """""""""""""""""""""""""""""""""""""""""""""""""""""""" " Fix solarized scheme in spf13-vim. The config sets up to use the degraded " 256-color mode for sake of some terminal emulators? (see " https://github.com/spf13/spf13-vim/issues/113). " " These two lines Must come in this order or they won't work: number and fold " columns and cursor line come out brownish (dark scheme) or black (light " scheme). let g:solarized_termcolors=16 set t_Co=16 """""""" "" UI - Code Folding """""""""""""""""""""""""""""""""""""""""""""""""""""""" set foldmethod=indent set foldlevel=10 """""""" "" Key Remaps """""""""""""""""""""""""""""""""""""""""""""""""""""""" " More convenient escape inoremap kj inoremap jk " Add extra lines up and down nnoremap j ok nnoremap k Oj " Get rid of spf13-vim's python/json mapping, which interferes with the above nunmap jt " Clear trailing white space nnoremap $ :%s/\s\+$//g " Convert tabs to spaces nnoremap :%s// /g " Backspace to clear current search (and stop highlighting) nnoremap :call ClearSearch() function! ClearSearch() if (@/ != "") let @/="" redraw endif endfunction nnoremap w :set wrap! " Toggle paste mode - no autoindenting of pasted material nnoremap p :set paste! paste? " Toggle visible whitespace characters nnoremap l :set list! " Toggle keyboard layout "nnoremap :call CycleKeymap() "function! CycleKeymap() "if has('keymap') "if (&keymap == '') "set keymap=colemak "echo 'Colemak keymap selected' "elseif (&keymap == 'colemak') "set keymap=dvorak "echo 'Dvorak keymap selected' "else "set keymap= "echo 'Qwerty keymap selected' "endif "else "echo 'Keymaps not supported' "endif "endfunction " Toggle scrollbind for moving multiple splits in sync together nnoremap sb :set scrollbind! scrollbind? " Toggle mouse support. nnoremap m :call ToggleMouse() function! ToggleMouse() if &mouse == 'a' set mouse= echo 'Mouse usage disabled' else set mouse=a echo 'Mouse usage enabled' endif endfunction " Toggle NERDTree file browser nnoremap d :NERDTreeMirrorToggle " Toggle Commenting out lines with NERDCommenter nnoremap , :call NERDComment("n", "toggle") vnoremap , :call NERDComment("x", "toggle") " Git commands with Fugitive nnoremap gc :Gcommit -v nnoremap gl :Glog nnoremap gap :Git add -p " Function definition jumping with CtrlP's Funky plugin nnoremap :CtrlPFunky """""""" "" Key Remaps - Movement and Windows """""""""""""""""""""""""""""""""""""""""""""""""""""""" " jump to beginning and end of line easier nmap H ^ nmap L $ vmap H ^ vmap L $ " Smart way to move between windows, without spf13-vim's vertical maximisation. "nnoremap j "nnoremap k "nnoremap h "nnoremap l " mapping to make movements operate on 1 screen line in wrap mode "onoremap j ScreenMovement("j") "onoremap k ScreenMovement("k") "onoremap 0 ScreenMovement("0") "onoremap ^ ScreenMovement("^") "onoremap $ ScreenMovement("$") "nnoremap j ScreenMovement("j") "nnoremap k ScreenMovement("k") "nnoremap 0 ScreenMovement("0") "nnoremap ^ ScreenMovement("^") "nnoremap $ ScreenMovement("$") "xnoremap j ScreenMovement("j") "xnoremap k ScreenMovement("k") "xnoremap 0 ScreenMovement("0") "xnoremap ^ ScreenMovement("^") "xnoremap $ ScreenMovement("$") "function! ScreenMovement(movement) "if &wrap "return 'g' . a:movement "else "return a:movement "endif "endfunction """""""" "" Plugin options """""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""" Powerline set rtp+=~/dotfiles/powerline/powerline/powerline/bindings/vim set noshowmode " don't show e.g. --INSERT-- since we're using powerline """"""""" Tagbar let g:tagbar_autoclose = 1 " close sidebar after we go to selection """"""""" Indent Guides let g:indent_guides_auto_colors = 0 let g:indent_guides_guide_size = 2 " reverse indent guides highlighting "highlight IndentGuidesOdd ctermbg=grey highlight IndentGuidesEven ctermbg=black """"""""" Syntastic let g:syntastic_auto_jump = 1 """"""""" CtrlP "let g:ctrlp_working_path_mode = 'rw' let's try out ra let g:ctrlp_extensions = ['funky'] """"""""" Vdebug let g:vdebug_options = { \ 'break_on_open' : 0, \ 'watch_window_style' : 'compact', \ 'path_maps' : {"/usr": "/jails/alcatraz/usr"} \ } """"""""" Vim Markdown let g:vim_markdown_folding_disabled = 1 """"""""" PIV let g:DisableAutoPHPFolding = 1 """"""""" Remove completion omni in the event that it is too slow "let g:neocomplete#sources#omni#input_patterns = {} "let g:neocomplcache_omni_patterns = {} """"""""" Source local scripts/plugins for filePath in split(globpath('~/dotfiles/vim/settings', '*.vim'), '\n') execute 'source' filePath endfor