" A small plugin to replace a text object with the contents of a register. " " This is invoked with the 'cp' command. For example " " cpiw - replace the inner word with the contents of the default register " "ncpiw - replace the inner word with the contents of register 'n' " " Notably, this command does not alter the contents of the default register, so " this command may be repeated without worry for changing the editor state. noremap cp call setcpreg(v:register)set operatorfunc=putg@ let s:savereg = '' let s:cpbuf = '"' function! s:setcpreg(r) abort let s:cpbuf = a:r endfunction function! s:put(arg, ...) abort if a:0 echo a:1 let vis = '`<' . a:arg . '`>' elseif a:arg == 'line' let vis = "'[V']" elseif a:arg == 'block' let vis = "`[\`]" else let vis = "`[v`]" endif let save = getreg('"') silent! exec printf("norm %s\"%sp", vis, s:cpbuf) call setreg('"', save) endfunction