diff options
Diffstat (limited to 'autoload/paste.vim')
-rw-r--r-- | autoload/paste.vim | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/autoload/paste.vim b/autoload/paste.vim new file mode 100644 index 00000000..3121eb13 --- /dev/null +++ b/autoload/paste.vim @@ -0,0 +1,39 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 + +" Vim support file to help with paste mappings and menus +" Maintainer: Bram Moolenaar <Bram@vim.org> +" Last Change: 2017 Aug 30 + +" 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'] = "\<c-\>\<c-o>\"+gP" + + 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 + +endif |