From 956a805eb9b6e337285349b4de495272ffce5069 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Mon, 12 Sep 2022 13:50:50 -0600 Subject: put.vim: add some more put operations cpp put over the line cP put from the current position to the end of the line ["r]{visual}P Paste, but place the yanked text into the provided register. --- plugin/put.vim | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'plugin/put.vim') diff --git a/plugin/put.vim b/plugin/put.vim index 62a0013..2240454 100644 --- a/plugin/put.vim +++ b/plugin/put.vim @@ -2,13 +2,32 @@ " " This is invoked with the 'cp' command. For example " -" cpiw - replace the inner word with the contents of the default register +" cpiw - replace the inner word with the contents of the default regist " "ncpiw - replace the inner word with the contents of register 'n' " +" The cp command also has some standard variants +" +" cpp - replace the whole line with the contents of the default register +" cP - replace from the current cursor position to th end of the line with +" the given register +" " 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@ +noremap cpp call setcpreg(v:register)set operatorfunc=putg@_ +noremap cP call setcpreg(v:register)set operatorfunc=putg@$ + +" Like 'p', but in visual mode doesn't clobber the "-register. If invoked with a +" register, the replaced text is put in the given register. +vnoremap P call paste_into_register(v:register) + +function! s:paste_into_register(r) abort + let save = getreg('"') + normal! p + call setreg(a:r, getreg('"')) + call setreg('"', save) +endfunction let s:savereg = '' let s:cpbuf = '"' -- cgit