diff options
Diffstat (limited to 'vim71/autoload/paste.vim')
-rw-r--r-- | vim71/autoload/paste.vim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/vim71/autoload/paste.vim b/vim71/autoload/paste.vim new file mode 100644 index 0000000..fcf06ec --- /dev/null +++ b/vim71/autoload/paste.vim @@ -0,0 +1,35 @@ +" Vim support file to help with paste mappings and menus +" Maintainer: Bram Moolenaar <Bram@vim.org> +" Last Change: 2006 Jun 23 + +" Define the string to use for items that are present both in Edit, Popup and +" Toolbar menu. Also used in mswin.vim and macmap.vim. + +" Pasting blockwise and linewise selections is not possible in Insert and +" Visual mode without the +virtualedit feature. They are pasted as if they +" were characterwise instead. Add to that some tricks to leave the cursor in +" the right position, also for "gi". +if has("virtualedit") + let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"} + let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n'] + let paste#paste_cmd['i'] = 'x<BS><Esc>' . paste#paste_cmd['n'] . 'gi' + + func! paste#Paste() + let ove = &ve + set ve=all + normal! `^ + if @+ != '' + normal! "+gP + endif + let c = col(".") + normal! i + if col(".") < c " compensate for i<ESC> moving the cursor left + normal! l + endif + let &ve = ove + endfunc +else + let paste#paste_cmd = {'n': "\"=@+.'xy'<CR>gPFx\"_2x"} + let paste#paste_cmd['v'] = '"-c<Esc>gix<Esc>' . paste#paste_cmd['n'] . '"_x' + let paste#paste_cmd['i'] = 'x<Esc>' . paste#paste_cmd['n'] . '"_s' +endif |