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
