diff options
Diffstat (limited to '')
| -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  | 
