Based on Alligator solution, using maps.
E.g. to paste the string _s_
in 3 cases:
" |-- original --|-- pasted after C --|-- pasted before C --|-- pasted replacing C --|
" |--------------|------------------------------------------------------------------------|
" |-- --|-- select column C --|-- select column B --|-- select column C --| --> step 0 (after copying/yanking a string)
" |-- --|-- press <leader>py --|-- press <leader>py --|-- press p --| --> step 1 if yanked
" |-- --|-- press <leader>pc --|-- press <leader>pc --|-- press "+p --| --> step 1 if copied to clipboard
" ABCD ABC_s_D AB_s_CD AB_s_D
" ABCD ABC_s_D AB_s_CD AB_s_D
" ABCD ABC_s_D AB_s_CD AB_s_D
Where the mappings for each register (yanked or copied respectively) are:
xnoremap <leader>py A<C-r>*<Esc>
xnoremap <leader>pc A<C-r>+<Esc>
In previous examples I pasted after column (even pasting before column C, I workaround to paste after column B). If desired to paste before just change A
to I
in the 2 mappings.
Instead of "+p
, one could use plain p
if previously: copied +
to *
register (needed in last case of table):
nnoremap <leader>z :let @*='<C-r>+'<CR>