| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- if has("autocmd")
- " Show trailing white space
- highlight ExtraWhitespace ctermfg=red ctermbg=red guifg=red guibg=red
- autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
- autocmd InsertLeave * match ExtraWhitespace /\s\+$/
- " Source the vimrc file after saving it
- autocmd BufWritePost .vimrc.local nested source $MYVIMRC
- " Fugitive - Go up to previous tree object while exploring git tree with '..'
- autocmd User fugitive
- \ if fugitive#buffer().type() =~# '^\%(tree\|blob\)$' |
- \ nnoremap <buffer> .. :edit %:h<CR> |
- \ 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 t_Co=256
- "set ttymouse=xterm2 " Needed to allow mouse support to resize windows
- "set ttyfast " Allows for instantaneous refresh when using the mouse to select
- " Have not gotten solarized to work properly yet highlighting of cursor,
- " width limit line and number and fold columns are wrong.
- """"""""
- "" UI - Code Folding
- """"""""""""""""""""""""""""""""""""""""""""""""""""""""
- set foldmethod=indent
- set foldlevel=10
- """"""""
- "" Key Remaps
- """"""""""""""""""""""""""""""""""""""""""""""""""""""""
- " More convenient escape
- inoremap kj <ESC>
- inoremap jk <ESC>
- " Add extra lines up and down
- nnoremap <leader>j o<Esc>k
- nnoremap <leader>k O<Esc>j
- " Get rid of spf13-vim's python/json mapping, which interferes with the above
- nunmap <leader>jt
- " Clear trailing white space
- nnoremap <silent> <leader>$ :%s/\s\+$//g<CR>
- " Convert tabs to spaces
- nnoremap <silent> <leader><TAB> :%s/<TAB>/ /g<CR>
- " Backspace to clear current search (and stop highlighting)
- nnoremap <silent> <backspace> :call ClearSearch()<CR>
- function! ClearSearch()
- if (@/ != "")
- let @/=""
- redraw
- endif
- endfunction
- nnoremap <silent> <leader>w :set wrap!<CR>
- " Toggle paste mode - no autoindenting of pasted material
- nnoremap <silent> <leader>p :set paste! paste?<CR>
- " Toggle visible whitespace characters
- nnoremap <silent> <leader>l :set list!<CR>
- " Toggle keyboard layout
- "nnoremap <silent> <leader><space> :call CycleKeymap()<CR>
- "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 <silent> <leader>sb :set scrollbind! scrollbind?<CR>
- " Toggle mouse support.
- nnoremap <silent> <leader>m :call ToggleMouse()<CR>
- 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 <silent> <leader>d :NERDTreeMirrorToggle<CR>
- " Toggle Commenting out lines with NERDCommenter
- nnoremap <silent> <leader>, :call NERDComment("n", "toggle")<CR>
- vnoremap <silent> <leader>, <ESC>:call NERDComment("x", "toggle")<CR>
- " Git commands with Fugitive
- nnoremap <silent> <leader>gc :Gcommit -v<CR>
- nnoremap <silent> <leader>gl :Glog<CR><CR>
- nnoremap <silent> <leader>gap :Git add -p<CR>
- " Function definition jumping with CtrlP's Funky plugin
- nnoremap <silent> <C-F> :CtrlPFunky<CR>
- """"""""
- "" 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 <C-j> <C-w>j
- "nnoremap <C-k> <C-w>k
- "nnoremap <C-h> <C-w>h
- "nnoremap <C-l> <C-w>l
- " mapping to make movements operate on 1 screen line in wrap mode
- "onoremap <silent> <expr> j ScreenMovement("j")
- "onoremap <silent> <expr> k ScreenMovement("k")
- "onoremap <silent> <expr> 0 ScreenMovement("0")
- "onoremap <silent> <expr> ^ ScreenMovement("^")
- "onoremap <silent> <expr> $ ScreenMovement("$")
- "nnoremap <silent> <expr> j ScreenMovement("j")
- "nnoremap <silent> <expr> k ScreenMovement("k")
- "nnoremap <silent> <expr> 0 ScreenMovement("0")
- "nnoremap <silent> <expr> ^ ScreenMovement("^")
- "nnoremap <silent> <expr> $ ScreenMovement("$")
- "xnoremap <silent> <expr> j ScreenMovement("j")
- "xnoremap <silent> <expr> k ScreenMovement("k")
- "xnoremap <silent> <expr> 0 ScreenMovement("0")
- "xnoremap <silent> <expr> ^ ScreenMovement("^")
- "xnoremap <silent> <expr> $ 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
- """"""""
- "" Functions
- for filePath in split(globpath('~/dotfiles/vim/settings', '*.vim'), '\n')
- execute 'source' filePath
- endfor
|