>
> >      >> >> Maybe this will give some insight: doing @; gives errors about
> an
>  >      >> >> invalid register ';' but doing @: is (apparently) a no-op.
> >      >> >
> >      >> > Sounds like a bug. : should be a register too. If it
> >     interprets @; as
> >      >> > the ; register, then it should interpret @: as the : register.
> >      >> >
> >      >> > --Ken
> >      >> >
> >      >> >
> >      >> Under ":help quote:" it is expicitly said that @: should repeat
> the
> >      >> latest ex-command.
> >      >>
> >      >> You can also use any of
> >      >> ":p
> >      >> ":P
> >      >>        :put:
> >      >>        :reg:
> >      >>
> >      >> to see what is there. Of course, if it were empty it would be a
> >     no-op.
> >      >> But here, even after using : as the ex-command the register
> doesn't
> >      >> become empty, and since it's a read-only register you couldn't do
> >      >>        :let @: = ""
> >      >
> >      >
> >      > That's still a bug though, right?  @: doesn't execute the latest
> >      > ex-command.  And @; should map to @: but doesn't...
> >
> >     One of the two following cases should be true:
> >     Case 1: @: maps to @;
> >             @; maps to @:
> >     Case 2: @: maps to @:
> >             @; maps to @;
> >     Case 2 really should be the case. (You're suggesting that case 1
> should
> >     be the case, and I disagree with that.)
> >
> >     In my testing, it appears that @; is complaining about the invalid ;
> >     register (like Case 2) and when I type @:, it beeps at me rather than
> >     executing the command. If I type ":p, it pastes the last command just
> >     fine (without a leading : or ;). So something's special-casing the @:
> >     code, and the mappings are messing it up. That's what sounds like a
> bug.
> >
> >
> > Well, does anyone have any ideas for a workaround?  I was thinking an
> > autocommand that would copy ';' + @: + '<cr>'  to @z or something.  Then
> > I could still use it, just with a different register.
>
> Hm, what happens if you use one of the following {rhs}es in a
> Normal-mode mapping? Then you wouldn't need to copy the ex-command
> register contents except when you really need it.
>
>        :exe @:<CR>
> or
>        :let @@ = @: <Bar> exe @@<CR>
> or
>        :let @@ = @: <Bar> normal @"<CR>
>
> Notes:
> 1. I'm clobbering the unnamed register as the one least likely to hold
> "valuable permanent data".
> 2. The above is for use in a mapping. To try it directly at the
> command-line, use | instead of <Bar> and hit the Enter key (to execute
> the ex-command) instead of <CR>.
>

This is close! The first choice works once:

:let @@ = @: <Bar> exe @@<CR>

But then of course @: has changed so I have to do exe @@.  I can live with
that for now, but I'd still prefer that the @@ actually included a ; and a
<CR> so that I can just do @@ instead of ;exe @@<CR>.  Of course I'll do it
with a mapping, but hopefully I won't have to do that forever and I'd like
to do this the real vim way.

Thanks again for your help Tony!  I'll make mappings now.

-- 
fREW Schmidt
http://blog.afoolishmanifesto.com

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

Reply via email to