Monday, November 30, 2009

Re: Specify a register for a custom command



On Mon, Nov 30, 2009 at 9:09 PM, Nathan Neff <nathan.neff@gmail.com> wrote:


On Mon, Nov 30, 2009 at 3:36 AM, Andy Wokula <anwoku@yahoo.de> wrote:
Nathan Neff schrieb:
> I'm looking to create a custom command / mapping where I can use the
> contents of a register that is specified by the user.
>
> Similar to how ["x]p works.  The user can press "ap and the contents of the
> "a" register will be pasted.  The user can just press p and the contents of
> the unnamed register are pasted by default.
>
> I want to define a custom command where the user can put the optional ["x]
> in front of the mapping, and my command will work with the register that the
> user specified.
>
> If the user doesn't specify a register, then I'm going to use the unnamed
> register by default.
>
> Is there a way to create a mapping that accepts the optional ["x] in front
> of it?
>
> Thanks,
> --Nate

:h v:register


nn <Leader>a :<C-U>call MyPaste()<CR>

func! MyPaste()
   exec "normal!" v:count1. '"'.v:register. "p"
endfunc


And what is your command supposed to do?


Good question.  The command will take the contents of the specified register and paste it in a new line below the cursor.  Similar to the :pu command.

Thanks,
--Nate
 

Andy, your solution worked.

I have a mapping that will paste a newline plus the contents of the specified register (or the unnamed register by default)

func! MyPaste()
    exec "pu " . v:register
endfunc

nn <leader>p :<C-U>call MyPaste()

This seems petty - it's the difference between 5 keystrokes and 2, but I use it
about 30 times a day.  Can I ask what the <C-U> does?  I tried the code w/o the <C-U> and I can't see a difference in the functionality.

Thanks,

--Nate

--

Andy

--
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php


--
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php

No comments: