On Sat, Mar 5, 2011 at 6:43 PM, James Vega <[email protected]> wrote:
> On Sat, Mar 05, 2011 at 01:31:50PM -0500, Donald Allen wrote:
>> On Sat, Mar 5, 2011 at 12:54 PM, Benjamin R. Haskell <[email protected]> wrote:
>> > On Sat, 5 Mar 2011, Donald Allen wrote:
>> >
>> >> If you delete a line, it gets pushed onto the register stack (the line
>> >> lands in the "" register). If you then undo the delete with 'u', the
>> >> register stack doesn't get popped -- it remains as it was just prior to 
>> >> the
>> >> 'undo'. So the undo has not undone all the effects of the command you are
>> >> undoing. 7.3 with patches through 138.
>> >
>> > Undo isn't intended to "undo all the effects of the command", per se. It
>> > reverses a change (or a block of changes) made to a buffer, not changes to
>> > the state of the entire program.  Can't quite see where in the help that's
>> > documented, but it seems rational to me.
>>
>> Yes, I also checked the documentation before sending my original
>> message and also was not able to find something definitive, which was
>> why I appended the question mark to my subject.
>>
>> Let's consider this a feature request, then. I think it's completely
>> reasonable to expect 'undo' to reverse the side-effects of an undone
>> command, where that's possible (I wouldn't expect it to undo the
>> changes to the filesystem as a result of a write command, for
>> example). In this case, I'd yanked some text that I wanted to 'put' in
>> a bunch of places. While going through the buffer, putting the text
>> where I wanted it, I noticed a line that needed to come out, so I
>> deleted it. Naturally, the next attempt to put gave me that line
>> instead of the original text I'd yanked.
>
> Then you should have been putting from register 0 instead of register ".
> Register 0 is the last yank, while register " is the last yank or
> delete.

Yes, you are right (in fact, that's how I proceeded after realizing
undo didn't restore the register stack). But I'm talking about
ease-of-use and efficient editing, and 'p' is a lot faster and easier
to type than '"0p' (after all, this is the editor where Steve Oualline
tells you on page 6 of his book not to use the arrow keys for cursor
movement, because it will slow down your editing). If undo restored
the stack as it was before the command I undid, I could have used 'p'.
I also think that what I'm proposing presents a more sensible model of
undo to the user. Ideally, (in my opinion), after 'undo', the world
would be as if the undone command had never been executed. That's
impossible to do perfectly, I understand that. But I think vim can
come closer to the ideal than it does now.

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui