Mercurial > dotfiles.old
changeset 226:55ff9bb3ea22
Clean up vimrc
author | zegervdv <zegervdv@me.com> |
---|---|
date | Wed, 21 Jan 2015 10:40:29 +0100 |
parents | 1d9bec72b9b3 |
children | 233c9d811b68 |
files | vim/autoload/plug.vim vimrc |
diffstat | 2 files changed, 138 insertions(+), 290 deletions(-) [+] |
line wrap: on
line diff
--- a/vim/autoload/plug.vim Wed Jan 21 09:11:59 2015 +0100 +++ b/vim/autoload/plug.vim Wed Jan 21 10:40:29 2015 +0100 @@ -73,7 +73,7 @@ let s:plug_buf = get(s:, 'plug_buf', -1) let s:mac_gui = has('gui_macvim') && has('gui_running') let s:is_win = has('win32') || has('win64') -let s:nvim = exists('##JobActivity') && !s:is_win +let s:nvim = has('nvim') && !s:is_win let s:me = resolve(expand('<sfile>:p')) let s:base_spec = { 'branch': 'master', 'frozen': 0 } let s:TYPE = { @@ -136,6 +136,10 @@ endfor endfunction +function! s:assoc(dict, key, val) + let a:dict[a:key] = add(get(a:dict, a:key, []), a:val) +endfunction + function! plug#end() if !exists('g:plugs') return s:err('Call plug#begin() first') @@ -147,7 +151,7 @@ augroup END augroup! PlugLOD endif - let lod = {} + let lod = { 'ft': {}, 'map': {}, 'cmd': {} } filetype off for name in g:plugs_order @@ -162,19 +166,12 @@ for cmd in s:to_a(plug.on) if cmd =~ '^<Plug>.\+' if empty(mapcheck(cmd)) && empty(mapcheck(cmd, 'i')) - for [mode, map_prefix, key_prefix] in - \ [['i', '<C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] - execute printf( - \ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, "%s")<CR>', - \ mode, cmd, map_prefix, string(cmd), string(name), key_prefix) - endfor + call s:assoc(lod.map, cmd, name) endif call add(s:triggers[name].map, cmd) elseif cmd =~ '^[A-Z]' if exists(':'.cmd) != 2 - execute printf( - \ 'command! -nargs=* -range -bang %s call s:lod_cmd(%s, "<bang>", <line1>, <line2>, <q-args>, %s)', - \ cmd, string(cmd), string(name)) + call s:assoc(lod.cmd, cmd, name) endif call add(s:triggers[name].cmd, cmd) endif @@ -186,19 +183,31 @@ if !empty(types) call s:source(s:rtp(plug), 'ftdetect/**/*.vim', 'after/ftdetect/**/*.vim') endif - for key in types - if !has_key(lod, key) - let lod[key] = [] - endif - call add(lod[key], name) + for type in types + call s:assoc(lod.ft, type, name) endfor endif endfor - for [key, names] in items(lod) + for [cmd, names] in items(lod.cmd) + execute printf( + \ 'command! -nargs=* -range -bang %s call s:lod_cmd(%s, "<bang>", <line1>, <line2>, <q-args>, %s)', + \ cmd, string(cmd), string(names)) + endfor + + for [map, names] in items(lod.map) + for [mode, map_prefix, key_prefix] in + \ [['i', '<C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] + execute printf( + \ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, "%s")<CR>', + \ mode, map, map_prefix, string(map), string(names), key_prefix) + endfor + endfor + + for [ft, names] in items(lod.ft) augroup PlugLOD execute printf('autocmd FileType %s call <SID>lod_ft(%s, %s)', - \ key, string(key), string(names)) + \ ft, string(ft), string(names)) augroup END endfor @@ -336,11 +345,11 @@ return endif for cmd in s:triggers[a:name].cmd - execute 'delc' cmd + execute 'silent! delc' cmd endfor for map in s:triggers[a:name].map - execute 'unmap' map - execute 'iunmap' map + execute 'silent! unmap' map + execute 'silent! iunmap' map endfor call remove(s:triggers, a:name) endfunction @@ -367,13 +376,13 @@ doautocmd filetypeindent FileType endfunction -function! s:lod_cmd(cmd, bang, l1, l2, args, name) - call s:lod([a:name], ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) +function! s:lod_cmd(cmd, bang, l1, l2, args, names) + call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) execute printf('%s%s%s %s', (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args) endfunction -function! s:lod_map(map, name, prefix) - call s:lod([a:name], ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) +function! s:lod_map(map, names, prefix) + call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) let extra = '' while 1 let c = getchar(0)
--- a/vimrc Wed Jan 21 09:11:59 2015 +0100 +++ b/vimrc Wed Jan 21 10:40:29 2015 +0100 @@ -4,41 +4,52 @@ call plug#begin('~/.vim/plugged') " General Plugins Plug 'tpope/vim-sensible' +Plug 'tpope/vim-fugitive' +Plug 'tpope/vim-repeat' + +" Spelling Plug 'tpope/vim-abolish' -Plug 'tpope/vim-fugitive' -Plug 'godlygeek/tabular', { 'on' : 'Tabularize' } -Plug 'tpope/vim-endwise' + +" Brackets Plug 'tpope/vim-surround' Plug 'jiangmiao/auto-pairs' -Plug 'kshenoy/vim-signature' -Plug 'tpope/vim-repeat' -Plug 't9md/vim-smalls' -Plug 'xolox/vim-session' -Plug 'tpope/vim-eunuch', { 'on' : ['Remove', 'Unlink', 'Move', 'Rename', 'Mkdir', 'Chmod', 'Find', 'Locate', 'SudoEdit', 'SudoWrite']} -Plug 'scrooloose/syntastic' + +" Formatting +Plug 'godlygeek/tabular', { 'on' : 'Tabularize' } + +" Comments Plug 'tpope/vim-commentary' + +" Moving in files Plug 'wellle/targets.vim' -Plug 'mtth/scratch.vim' -Plug 'mrmargolis/dogmatic.vim' -Plug 'whatyouhide/vim-gotham' + +" Command line +Plug 'tpope/vim-eunuch', { 'on' : ['Remove', 'Unlink', 'Move', 'Rename', 'Mkdir', 'Chmod', 'Find', 'Locate', 'SudoEdit', 'SudoWrite']} -" Undo +" Syntax and checking +Plug 'scrooloose/syntastic' + +" Undoing Plug 'sjl/gundo.vim', { 'on': 'GundoToggle' } " Tmux Plug 'christoomey/vim-tmux-navigator' Plug 'tpope/vim-dispatch' -" Search and Complete -" Plug 'Shougo/neocomplete' +" Completing and snippets Plug 'ajh17/VimCompletesMe' -Plug 'Shougo/neosnippet' -Plug 'Shougo/neosnippet-snippets' -Plug 'Shougo/vimproc', { 'do': 'make' } -Plug 'Shougo/unite.vim' -Plug 'Shougo/vimfiler.vim' -Plug 'Shougo/unite-outline' -Plug 'tsukkee/unite-tag' + +" Vim file navigation +Plug 'tpope/vim-vinegar' + +" Open and find files +Plug 'ctrlpvim/ctrlp.vim' + +" Don't use arrows! +Plug 'mrmargolis/dogmatic.vim' + +" Theme +Plug 'whatyouhide/vim-gotham' " Ruby Plug 'tpope/vim-rails', { 'for': 'ruby' } @@ -61,18 +72,12 @@ " Git Plug 'tpope/vim-git' - -" Dependencies -Plug 'MarcWeber/vim-addon-mw-utils' -Plug 'tomtom/tlib_vim' -Plug 'xolox/vim-misc' - - call plug#end() " }}} -" General Settings {{{ + +" General Settings and options {{{ set nocompatible - +" Backspace over everything, like normal set backspace=2 set autowrite @@ -96,15 +101,12 @@ set lbr set tabstop=2 shiftwidth=2 -" Layout +" Theme and style set t_Co=256 set background=dark color gotham set guifont=Inconsolata\ for\ Powerline:h12 -" Make background color same as terminal ("transparent") -" hi Normal ctermbg=none -set autowrite set hidden set hlsearch set incsearch @@ -170,11 +172,7 @@ " Sentences are ended with double spaces set cpo+=J - - -" set list -" set listchars=tab:▸\ ,eol:¬ -" }}} +" }}} " Status line {{{ function! Status() let statusline = '' @@ -189,51 +187,17 @@ set laststatus=2 set statusline=%!Status() " }}} -" Custom remaps and tricks {{{ -" Enable spelling only for latex and text -au BufNewFile,BufRead,BufEnter *.tex setlocal spell spelllang=en_gb -au BufNewFile,BufRead,BufEnter *.tex setlocal textwidth=0 -au BufNewFile,BufRead,BufEnter *.txt setlocal spell spelllang=en_gb -au BufNewFile,BufRead,BufEnter *.txt setlocal textwidth=0 -au FileType gitcommit setlocal spell spelllang=en_gb -set thesaurus+=~/.vim/thesaurus/mthesaur.txt -autocmd BufRead *_spec.rb set filetype=rspec - -" Fix comments for matlab -autocmd FileType matlab setlocal commentstring=\%\ %s - -highlight SpellBad ctermbg=256 ctermfg=210 -highlight SpellLocal ctermbg=240 ctermfg=010 -highlight SpellCap ctermbg=256 ctermfg=211 - -" When editing a file, always jump to the last known cursor position. -" Don't do it for commit messages, when the position is invalid, or when -" inside an event handler (happens when dropping a file on gvim). -autocmd BufReadPost * - \ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") | - \ exe "normal g`\"" | - \ endif - -" Set leader to space -" let mapleader = " " +" Mappings {{{ +" Set leader to spacebar map <space> <leader> -" Fix weird error where space n hangs vim with search -noremap <space>n <nop> - " See long lines as line breaks map j gj map k gk -" remap tag-search to better place -" nmap <C-$> <C-]> -function! JumpToTagInSplit() - execute "normal! \<c-w>v\<c-]>mzzMzvzz15\<c-e>" - execute "keepjumps normal! `z" - Pulse -endfunction -nnoremap <C-$> :silent! call JumpToTagInSplit()<CR> +" Remap tag-search to better place +nmap <C-$> <C-]> " Jump to end of line in insert mode inoremap <C-a> <C-o>I @@ -251,9 +215,6 @@ " Switch between the last two files nnoremap <leader><leader> <C-^> -" Move between buffers -nnoremap gb :bnext<CR> -nnoremap gB :bprevious<CR> " Very Magic search patterns nmap / /\v @@ -268,49 +229,9 @@ inoremap £ \ -nnoremap <TAB> % -vnoremap <TAB> % - -" Move between splits -" map <C-j> <C-w>j -" map <C-k> <C-w>k -" map <C-l> <C-w>l -" map <C-h> <C-w>h - -" highlight last inserted text +" Highlight last inserted text nnoremap gV `[v`] -" Briefly change colour of last highlight -" nnoremap <silent> n n:call HLNext(0.4)<cr> -" nnoremap <silent> N N:call HLNext(0.4)<cr> - -function! HLNext (blinktime) - highlight WhiteOnRed ctermfg=white ctermbg=red guifg=white guibg=red - let [bufnum, lnum, col, off] = getpos('.') - let matchlen = strlen(matchstr(strpart(getline('.'),col-1),@/)) - let target_pat = '\c\%#'.@/ - let ring = matchadd('WhiteOnRed', target_pat, 101) - redraw - exec 'sleep ' . float2nr(a:blinktime * 1000) . 'm' - call matchdelete(ring) - redraw -endfunction - -" This is adapted from -" http://vim.wikia.com/wiki/Windo_and_restore_current_window -function! KeepWin(command) - let currwin=winnr() - execute a:command - execute currwin . 'wincmd w' -endfunction - -augroup insertMatch - au! - au VimEnter * NoMatchParen - au InsertEnter * call KeepWin("DoMatchParen") - au InsertLeave * call KeepWin("NoMatchParen") -augroup END - " Highlight VCS conflict markers match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' @@ -337,27 +258,44 @@ endif endfunction -au FileType c setl foldmethod=syntax - -au VimResized * exe "normal! \<c-w>=" - +" Some emacs behavior cnoremap <c-a> <home> cnoremap <c-e> <end> " Swap backticks and quotes nnoremap ` ' nnoremap ' ` +" }}} -" Note that this will overwrite the contents of the z mark. I never use it, but -" if you do you'll probably want to use another mark. -inoremap <C-u> <esc>mzgUiw`za +" Functions {{{ +" When editing a file, always jump to the last known cursor position. +" Don't do it for commit messages, when the position is invalid, or when +" inside an event handler (happens when dropping a file on gvim). +autocmd BufReadPost * + \ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g`\"" | + \ endif -nnoremap <leader>ev :split $MYVIMRC<cr> +" Make matching parenthesis more clear +" This is adapted from +" http://vim.wikia.com/wiki/Windo_and_restore_current_window +function! KeepWin(command) + let currwin=winnr() + execute a:command + execute currwin . 'wincmd w' +endfunction -" Move lines from visual selection -vnoremap <S-j> :m '>+1<CR>gv=gv -vnoremap <S-k> :m '<-2<CR>gv=gv +augroup insertMatch + au! + au VimEnter * NoMatchParen + au InsertEnter * call KeepWin("DoMatchParen") + au InsertLeave * call KeepWin("NoMatchParen") +augroup END +" Resize splits after window resize +au VimResized * exe "normal! \<c-w>=" + +" Custom folding by Steve Losh function! MyFoldText() " {{{ let line = getline(v:foldstart) @@ -374,125 +312,42 @@ return line . '…' . repeat(" ",fillcharcount) . foldedlinecount . '…' . ' ' endfunction " }}} set foldtext=MyFoldText() +" }}} -" VHDL ctags -let g:tlist_vhdl_settings = 'vhdl;d:package declarations;b:package bodies;e:entities;a:architecture specifications;t:type declarations;p:processes;f:functions;r:procedures' -" }}} +" Filetype specific settings " Latex {{{ " Open pdf nnoremap <leader>v :!open -a /Applications/TeX/TeXShop.app %:r.pdf<CR><CR> " Set compiler to rubber autocmd FileType tex setlocal makeprg=latexmk\ -pdf\ %:r -" }}} -" Unite {{{ -call unite#filters#matcher_default#use(['matcher_fuzzy']) -call unite#filters#sorter_default#use(['sorter_rank']) -" call unite#set_profile('files', 'smartcase', 1) -call unite#custom#profile('files', 'context.smartcase', 1) -call unite#custom#source('line,outline', 'matchers', 'matcher_fuzzy') -call unite#custom#source( 'buffer', 'converters', ['converter_file_directory']) -" sort file results by length -call unite#custom#source('file', 'sorters', 'sorter_length') -call unite#custom#source('file_rec/async', 'converters', []) -call unite#custom#source('file_rec/async', 'sorters', []) -call unite#custom#source('file_rec/async', 'ignore_globs', split(&wildignore, ',')) -call unite#custom#source('file_rec/async', 'max_candidates', 50) -let g:unite_enable_start_insert=0 -let g:unite_source_history_yank_enable=1 -let g:unite_source_rec_max_cache_files=3000 -let g:unite_prompt='» ' -if executable('ag') - let g:unite_source_grep_command = 'ag' - let g:unite_source_grep_default_opts = - \ '-i --line-numbers --nocolor --nogroup --hidden --ignore ' . - \ '''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr''' - let g:unite_source_grep_recursive_opt = '' - let g:unite_source_rec_async_command = 'ag --nocolor --nogroup --hidden -g ""' -elseif executable('ack') - let g:unite_source_grep_command='ack' - let g:unite_source_grep_default_opts='--no-heading --no-color -C4' - let g:unite_source_grep_recursive_opt='' -endif -function! s:unite_settings() - nmap <buffer> Q <plug>(unite_exit) - nmap <buffer> <esc> <plug>(unite_exit) - imap <buffer> <C-j> <Plug>(unite_select_next_line) - imap <buffer> <C-k> <Plug>(unite_select_previous_line) -endfunction -autocmd FileType unite call s:unite_settings() - -nnoremap <silent> <leader>k :<C-u>Unite -auto-preview -buffer-name=recent file_mru<cr> -nnoremap <silent> <leader>y :<C-u>Unite -buffer-name=yanks history/yank<cr> -nnoremap <silent> <leader>f :<C-u>Unite -no-quit -buffer-name=search grep:.<cr> -nnoremap <silent> <leader>g :<C-u>Unite -no-quit -buffer-name=search grep:.<CR><C-r><C-w><CR> -nnoremap <silent> <leader>o :<C-u>Unite outline<CR> -nnoremap <silent> <leader>t :<C-u>Unite tag<CR> -nnoremap <silent> <C-p> :<C-u>Unite -start-insert buffer file_rec/async<CR> -" nnoremap <silent> <leader>h :<C-u>Unite ssh://Hurricane/STM-Quadcopter/source<CR> -" nnoremap <silent> <leader>i :<C-u>Unite ssh://imac-van-zeger.local/Documents<CR> -" }}} -" Unite Build {{{ -" TODO: Create builders eg Latex, Vagrant? -" }}} -" Vimfiler {{{ -" Use vimfiler as default -let g:vimfiler_as_default_explorer = 1 -nnoremap <leader>e :VimFilerExplorer<CR> -let g:vimfiler_ignore_pattern = '\%(.o\|.bin\|.elf\|.un\~\|.swp\)$' -" }}} -" Cucumber {{{ -" map <leader>f :call RunAllFeatures()<CR> -" map <leader>k :call RunCurrentFeature()<CR> +au BufNewFile,BufRead,BufEnter *.tex setlocal spell spelllang=en_gb +au BufNewFile,BufRead,BufEnter *.tex setlocal textwidth=0 " }}} " Markdown {{{ let g:vim_markdown_folding_disabled=1 " }}} -" Neo Complete {{{ -let g:neocomplete#enable_at_startup = 1 -let g:neocomplete#enable_smart_case = 1 -let g:neocomplete#force_overwrite_completefunc = 1 -let g:marching_enable_neocomplete = 1 -let g:neocomplete#enable_fuzzy_completion = 1 +" Text {{{ +au BufNewFile,BufRead,BufEnter *.txt setlocal spell spelllang=en_gb +au BufNewFile,BufRead,BufEnter *.txt setlocal textwidth=0 +" }}} +" Git commit messages {{{ +au FileType gitcommit setlocal spell spelllang=en_gb +" }}} +" Ruby {{{ +autocmd BufRead *_spec.rb set filetype=rspec +" }}} +" Matlab {{{ +autocmd FileType matlab setlocal commentstring=\%\ %s +" }}} +" C {{{ +au FileType c setlocal foldmethod=syntax +" }}} +" VHDL {{{ +" VHDL ctags +let g:tlist_vhdl_settings = 'vhdl;d:package declarations;b:package bodies;e:entities;a:architecture specifications;t:type declarations;p:processes;f:functions;r:procedures' +" }}} -inoremap <expr><s-CR> pumvisible() ? neocomplete#smart_close_popup()"\<CR>" : "\<CR>" -inoremap <expr><C-g> neocomplete#undo_completion() -inoremap <expr><C-l> neocomplete#complete_common_string() -function! CleverCr() - if pumvisible() - if neosnippet#expandable() - let exp = "\<Plug>(neosnippet_expand)" - return exp . neocomplete#smart_close_popup() - else - return neocomplete#smart_close_popup() - endif - else - return "\<CR>" - endif -endfunction -" <CR> close popup and save indent or expand snippet -imap <expr> <CR> CleverCr() - -" }}} -" Neo Snippets {{{ -imap <C-k> <Plug>(neosnippet_expand_or_jump) -smap <C-k> <Plug>(neosnippet_expand_or_jump) -xmap <C-k> <Plug>(neosnippet_expand_target) - -" imap <expr><TAB> neosnippet#expandable_or_jumpable() ? -" \ "\<Plug>(neosnippet_expand_or_jump)" -" \: pumvisible() ? "\<C-n>" : "\<TAB>" -" smap <expr><TAB> neosnippet#expandable_or_jumpable() ? -" \ "\<Plug>(neosnippet_expand_or_jump)" -" \: "\<TAB>" - - -imap <expr><TAB> neosnippet#expandable() == 1 ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>" -imap <expr><C-k> neosnippet#expandable_or_jumpable() == 1 ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>" -smap <expr><TAB> neosnippet#expandable() == 1 ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>" -" let g:neocomplete#sources#omni#input_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' - -let g:neosnippet#snippets_directory='~/.vim/snippets' -" }}} +" Plugin settings " Tabular {{{ inoremap <silent> <Bar> <Bar><Esc>:call <SID>align()<CR>a @@ -519,9 +374,6 @@ nmap <Leader>a, :Tabularize /,\zs/l0l1<CR> vmap <Leader>a, :Tabularize /,\zs/l0l1<CR> vmap <Leader>a- :Tabularize /-<CR> -" }}} -" Tagbar {{{ -nmap <F8> :TagbarToggle<CR> " }}} " Syntastic {{{ let g:syntastic_check_on_open=1 @@ -529,32 +381,19 @@ " Gundo tree {{{ nnoremap <leader>u :GundoToggle<CR> " }}} -" Smalls {{{ -nmap <C-s> <Plug>(smalls) -omap <C-s> <Plug>(smalls) -xmap <C-s> <Plug>(smalls) -" }}} -" Textmanip {{{ -xmap <C-j> <Plug>(textmanip-move-down) -xmap <C-k> <Plug>(textmanip-move-up) -xmap <C-h> <Plug>(textmanip-move-left) -xmap <C-l> <Plug>(textmanip-move-right) -xmap <F10> <Plug>(textmanip-toggle-mode) -" }}} -" Startify {{{ -let g:startify_session_dir = "~/.vim/sessions" -" }}} -" Vimwiki {{{ -let g:notes_directories = ['~/.vim/notes'] -" }}} -" Vim Sessions {{{ -let g:session_autosave = 'no' -" }}} " Dispatch {{{ nnoremap <leader>s :Make<CR> autocmd FileType python setlocal makeprg=ipython\ --pdb\ % autocmd FileType ruby setlocal makeprg=ruby\ % " }}} +" CtrlP {{{ +if executable('ag') + set grepprg=ag\ --nogroup\ --color + + let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' + let g:ctrlp_use_caching = 0 +endif +" }}} " Load local vimrc if filereadable($HOME . "/.vimrc.local")