mirror of
https://github.com/amix/vimrc
synced 2025-06-16 01:25:00 +08:00
Updated vimrc
This commit is contained in:
@ -74,34 +74,39 @@ function! repeat#setreg(sequence,register)
|
||||
endfunction
|
||||
|
||||
function! repeat#run(count)
|
||||
if g:repeat_tick == b:changedtick
|
||||
let r = ''
|
||||
if g:repeat_reg[0] ==# g:repeat_sequence && !empty(g:repeat_reg[1])
|
||||
if g:repeat_reg[1] ==# '='
|
||||
" This causes a re-evaluation of the expression on repeat, which
|
||||
" is what we want.
|
||||
let r = '"=' . getreg('=', 1) . "\<CR>"
|
||||
try
|
||||
if g:repeat_tick == b:changedtick
|
||||
let r = ''
|
||||
if g:repeat_reg[0] ==# g:repeat_sequence && !empty(g:repeat_reg[1])
|
||||
if g:repeat_reg[1] ==# '='
|
||||
" This causes a re-evaluation of the expression on repeat, which
|
||||
" is what we want.
|
||||
let r = '"=' . getreg('=', 1) . "\<CR>"
|
||||
else
|
||||
let r = '"' . g:repeat_reg[1]
|
||||
endif
|
||||
endif
|
||||
|
||||
let c = g:repeat_count
|
||||
let s = g:repeat_sequence
|
||||
let cnt = c == -1 ? "" : (a:count ? a:count : (c ? c : ''))
|
||||
if ((v:version == 703 && has('patch100')) || (v:version == 704 && !has('patch601')))
|
||||
exe 'norm ' . r . cnt . s
|
||||
else
|
||||
let r = '"' . g:repeat_reg[1]
|
||||
call feedkeys(s, 'i')
|
||||
call feedkeys(r . cnt, 'ni')
|
||||
endif
|
||||
else
|
||||
if ((v:version == 703 && has('patch100')) || (v:version == 704 && !has('patch601')))
|
||||
exe 'norm! '.(a:count ? a:count : '') . '.'
|
||||
else
|
||||
call feedkeys((a:count ? a:count : '') . '.', 'ni')
|
||||
endif
|
||||
endif
|
||||
|
||||
let c = g:repeat_count
|
||||
let s = g:repeat_sequence
|
||||
let cnt = c == -1 ? "" : (a:count ? a:count : (c ? c : ''))
|
||||
if ((v:version == 703 && has('patch100')) || (v:version == 704 && !has('patch601')))
|
||||
exe 'norm ' . r . cnt . s
|
||||
else
|
||||
call feedkeys(r . cnt, 'ni')
|
||||
call feedkeys(s, 'i')
|
||||
endif
|
||||
else
|
||||
if ((v:version == 703 && has('patch100')) || (v:version == 704 && !has('patch601')))
|
||||
exe 'norm! '.(a:count ? a:count : '') . '.'
|
||||
else
|
||||
call feedkeys((a:count ? a:count : '') . '.', 'ni')
|
||||
endif
|
||||
endif
|
||||
catch /^Vim(normal):/
|
||||
return 'echoerr v:errmsg'
|
||||
endtry
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! repeat#wrap(command,count)
|
||||
@ -112,17 +117,23 @@ function! repeat#wrap(command,count)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
nnoremap <silent> <Plug>(RepeatDot) :<C-U>call repeat#run(v:count)<CR>
|
||||
nnoremap <silent> <Plug>(RepeatDot) :<C-U>exe repeat#run(v:count)<CR>
|
||||
nnoremap <silent> <Plug>(RepeatUndo) :<C-U>call repeat#wrap('u',v:count)<CR>
|
||||
nnoremap <silent> <Plug>(RepeatUndoLine) :<C-U>call repeat#wrap('U',v:count)<CR>
|
||||
nnoremap <silent> <Plug>(RepeatRedo) :<C-U>call repeat#wrap("\<Lt>C-R>",v:count)<CR>
|
||||
|
||||
if !hasmapto('<Plug>(RepeatDot)', 'n') | nmap . <Plug>(RepeatDot)| endif
|
||||
if !hasmapto('<Plug>(RepeatUndo)', 'n') | nmap u <Plug>(RepeatUndo)| endif
|
||||
if !hasmapto('<Plug>(RepeatDot)', 'n')
|
||||
nmap . <Plug>(RepeatDot)
|
||||
endif
|
||||
if !hasmapto('<Plug>(RepeatUndo)', 'n')
|
||||
nmap u <Plug>(RepeatUndo)
|
||||
endif
|
||||
if maparg('U','n') ==# '' && !hasmapto('<Plug>(RepeatUndoLine)', 'n')
|
||||
nmap U <Plug>(RepeatUndoLine)
|
||||
endif
|
||||
if !hasmapto('<Plug>(RepeatRedo)', 'n') | nmap <C-R> <Plug>(RepeatRedo)| endif
|
||||
if !hasmapto('<Plug>(RepeatRedo)', 'n')
|
||||
nmap <C-R> <Plug>(RepeatRedo)
|
||||
endif
|
||||
|
||||
augroup repeatPlugin
|
||||
autocmd!
|
||||
|
Reference in New Issue
Block a user