2010-10-12 23:43:29 -04:00
|
|
|
*gundo.txt* Graph your undo tree so you can actually USE it.
|
|
|
|
|
|
|
|
|
2010-10-18 11:03:51 -04:00
|
|
|
CURRENT STATUS: BETA
|
2010-10-12 23:43:29 -04:00
|
|
|
|
2010-10-18 11:03:51 -04:00
|
|
|
IT MIGHT EAT YOUR DATA
|
2010-10-12 23:43:29 -04:00
|
|
|
|
|
|
|
SERIOUSLY: IF YOU USE THIS PLUGIN, LOSE DATA AND COMPLAIN ABOUT IT
|
|
|
|
I AM GOING TO MAKE FUN OF YOU ON TWITTER
|
|
|
|
|
|
|
|
|
|
|
|
Making's Vim's undo tree usable by humans.
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
1. Intro *Gundo-plugin* *Gundo*
|
|
|
|
|
|
|
|
You know that Vim lets you undo changes like any text editor. What you might
|
|
|
|
not know is that it doesn't just keep a list of your changes -- it keeps
|
|
|
|
a goddamed |:undo-tree| of them.
|
|
|
|
|
|
|
|
Say you make a change (call it X), undo that change, and then make another
|
|
|
|
change (call it Y). With most editors, change X is now gone forever. With Vim
|
|
|
|
you can get it back.
|
|
|
|
|
|
|
|
The problem is that trying to do this in the real world is painful. Vim gives
|
|
|
|
you an |:undolist| command that shows you the leaves of the tree. Good luck
|
|
|
|
finding the change you want in that list.
|
|
|
|
|
|
|
|
Gundo is a plugin to make browsing this ridiculously powerful undo tree less
|
|
|
|
painful.
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
2. Usage *GundoUsage*
|
|
|
|
|
|
|
|
We'll get to the technical details later, but if you're a human the first
|
|
|
|
thing you need to do is add a mapping to your |:vimrc| to toggle the undo
|
|
|
|
graph: >
|
|
|
|
|
|
|
|
nnoremap <F5> :GundoToggle<CR>
|
|
|
|
|
|
|
|
Change the mapped key to suit your taste. We'll stick with F5 because that's
|
|
|
|
what the author uses.
|
|
|
|
|
|
|
|
Now you can press F5 to toggle the undo graph and preview pane, which will
|
|
|
|
look something like this: >
|
|
|
|
|
2010-10-13 15:19:20 -04:00
|
|
|
Undo graph File
|
|
|
|
+-----------------------------------+------------------------------------+
|
|
|
|
| " Gundo for something.txt [1] |one |
|
|
|
|
| " j/k - move between undo states |two |
|
|
|
|
| " <cr> - revert to that state |three |
|
|
|
|
| |five |
|
|
|
|
| @ [5] 3 hours ago | |
|
|
|
|
| | | |
|
|
|
|
| | o [4] 4 hours ago | |
|
|
|
|
| | | | |
|
|
|
|
| o | [3] 4 hours ago | |
|
|
|
|
| | | | |
|
|
|
|
| o | [2] 4 hours ago | |
|
|
|
|
| |/ | |
|
|
|
|
| o [1] 4 hours ago | |
|
|
|
|
| | | |
|
2010-10-17 15:02:33 -04:00
|
|
|
| o [0] Original | |
|
2010-10-13 15:19:20 -04:00
|
|
|
+-----------------------------------+ |
|
|
|
|
| --- 3 2010-10-12 06:27:35 PM | |
|
|
|
|
| +++ 5 2010-10-12 07:38:37 PM | |
|
|
|
|
| @@ -1,3 +1,4 | |
|
|
|
|
| one | |
|
|
|
|
| two | |
|
|
|
|
| three | |
|
|
|
|
| +five | |
|
|
|
|
+-----------------------------------+------------------------------------+
|
|
|
|
Preview pane
|
2010-10-12 23:43:29 -04:00
|
|
|
|
|
|
|
Your current position in the undo tree is marked with an '@' character. Other
|
|
|
|
nodes are marked with an 'o' character.
|
|
|
|
|
|
|
|
When you toggle open the graph Gundo will put your cursor on your current
|
|
|
|
position in the tree. You can move up and down the graph with the j and
|
|
|
|
k keys.
|
|
|
|
|
|
|
|
You can move to the top of the graph (the newest state) with gg and to the
|
|
|
|
bottom of the graph (the oldest state) with G.
|
|
|
|
|
|
|
|
As you move between undo states the preview pane will show you a unified diff
|
|
|
|
of the change that state made.
|
|
|
|
|
|
|
|
Pressing enter on a state will revert the contents of the file to match that
|
|
|
|
state.
|
|
|
|
|
|
|
|
Pressing P while on a state will initiate "play to" mode targeted at that
|
|
|
|
state. This will replay all the changes between your current state and the
|
|
|
|
target, with a slight pause after each change. It's mostly useless, but can be
|
|
|
|
fun to watch and see where your editing lags -- that might be a good place to
|
|
|
|
define a new mapping to speed up your editing.
|
|
|
|
|
2010-10-15 18:25:55 -04:00
|
|
|
Pressing q while in the undo graph will close it. You can also just press your
|
|
|
|
toggle mapping key.
|
2010-10-12 23:43:29 -04:00
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
3. License *GundoLicense*
|
|
|
|
|
|
|
|
GPLv2+. Look it up.
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
4. Bugs *GundoBugs*
|
|
|
|
|
|
|
|
If you find a bug please post it on the issue tracker:
|
|
|
|
http://bitbucket.org/sjl/gundo.vim/issues?status=new&status=open
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
5. Contributing *GundoContributing*
|
|
|
|
|
|
|
|
Think you can make this plugin better? Awesome. Fork it on BitBucket or GitHub
|
|
|
|
and send a pull request.
|
|
|
|
|
|
|
|
BitBucket: http://bitbucket.org/sjl/gundo.vim/
|
|
|
|
GitHub: http://github.com/sjl/gundo.vim/
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
6. Credits *GundoCredits*
|
|
|
|
|
|
|
|
The graphing code was all taken from Mercurial, hence the GPLv2+ license.
|
|
|
|
|
|
|
|
The plugin was heavily inspired by histwin.vim, and the code for scratch.vim
|
|
|
|
helped the author get started.
|
|
|
|
|
|
|
|
==============================================================================
|