| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- *gundo.txt* Graph your undo tree so you can actually USE it.
- Making Vim's undo tree usable by humans.
- ==============================================================================
- CONTENTS *Gundo-contents*
- 1. Intro .......................... |GundoIntro|
- 2. Usage .......................... |GundoUsage|
- 3. Configuration .................. |GundoConfig|
- 3.1 gundo_width ............... |gundo_width|
- 3.2 gundo_preview_height ...... |gundo_preview_height|
- 3.3 gundo_preview_bottom ...... |gundo_preview_bottom|
- 3.4 gundo_right ............... |gundo_right|
- 3.5 gundo_help ................ |gundo_help|
- 3.6 gundo_disable ............. |gundo_disable|
- 3.7 gundo_map_move_older ...... |gundo_map_move_older|
- gundo_map_move_newer ...... |gundo_map_move_newer|
- 3.8 gundo_close_on_revert ..... |gundo_close_on_revert|
- 3.9 gundo_preview_statusline .. |gundo_preview_statusline|
- gundo_tree_statusline ..... |gundo_tree_statusline|
- 4. License ........................ |GundoLicense|
- 5. Bugs ........................... |GundoBugs|
- 6. Contributing ................... |GundoContributing|
- 7. Changelog ...................... |GundoChangelog|
- 8. Credits ........................ |GundoCredits|
- ==============================================================================
- 1. Intro *GundoIntro*
- 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: >
- 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 | |
- | | | |
- | o [0] Original | |
- +-----------------------------------+ |
- | --- 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
- 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 (or double clicking on it) will revert the contents
- of the file to match that state.
- You can use p on a state to make the preview window show the diff between
- your current state and the selected state, instead of a preview of what the
- selected state changed.
- 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.
- Pressing q while in the undo graph will close it. You can also just press your
- toggle mapping key.
- ==============================================================================
- 3. Configuration *GundoConfig*
- You can tweak the behavior of Gundo by setting a few variables in your :vimrc
- file. For example: >
- let g:gundo_width = 60
- let g:gundo_preview_height = 40
- let g:gundo_right = 1
- ------------------------------------------------------------------------------
- 3.1 g:gundo_width *gundo_width*
- Set the horizontal width of the Gundo graph (and preview).
- Default: 45
- ------------------------------------------------------------------------------
- 3.2 g:gundo_preview_height *gundo_preview_height*
- Set the vertical height of the Gundo preview.
- Default: 15
- ------------------------------------------------------------------------------
- 3.3 g:gundo_preview_bottom *gundo_preview_bottom*
- Force the preview window below current windows instead of below the graph.
- This gives the preview window more space to show the unified diff.
- Example:
- +--------+ +--------+
- !g! ! ! !g!
- !g! ! or ! !g!
- !g!______! !______!g!
- !g!pppppp! !pppppp!g!
- +--------+ +--------+
- Default: 0
- ------------------------------------------------------------------------------
- 3.4 g:gundo_right *gundo_right*
- Set this to 1 to make the Gundo graph (and preview) open on the right side
- instead of the left.
- Default: 0 (off, open on the left side)
- ------------------------------------------------------------------------------
- 3.5 g:gundo_help *gundo_help*
- Set this to 0 to disable the help text in the Gundo graph window.
- Default: 1 (show the help)
- ------------------------------------------------------------------------------
- 3.6 g:gundo_disable *gundo_disable*
- Set this to 1 to disable Gundo entirely.
- Useful if you use the same ~/.vim folder on multiple machines, and some of
- them may not have Python support.
- Default: 0 (Gundo is enabled as usual)
- ------------------------------------------------------------------------------
- 3.7 g:gundo_map_move_older, g:gundo_map_move_newer *gundo_map_move_older*
- *gundo_map_move_newer*
- These options let you change the keys that navigate the undo graph. This is
- useful if you use a Dvorak keyboard and have changed your movement keys.
- Default: gundo_map_move_older = "j"
- gundo_map_move_newer = "k"
- ------------------------------------------------------------------------------
- 3.8 g:gundo_close_on_revert *gundo_close_on_revert*
- Set this to 1 to automatically close the Gundo windows when reverting.
- Default: 0 (windows do not automatically close)
- ------------------------------------------------------------------------------
- 3.9 g:gundo_preview_statusline *gundo_preview_statusline*
- g:gundo_tree_statusline *gundo_tree_statusline*
- Set these to a string to display it as the status line for each Gundo window.
- Default: unset (windows use the default statusline)
- ==============================================================================
- 4. License *GundoLicense*
- GPLv2+. Look it up.
- ==============================================================================
- 5. 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
- ==============================================================================
- 6. 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/
- ==============================================================================
- 7. Changelog *GundoChangelog*
- v2.3.0
- * Add statusline configuration.
- v2.2.2
- * More performance improvements.
- v2.2.1
- * Refactoring and performance improvements.
- v2.2.0
- * Add the g:gundo_close_on_revert setting.
- * Fix a bug with the splitbelow setting.
- v2.1.1
- * Fix a bug with the movement key mappings.
- v2.1.0
- * Warnings about having an incompatible Vim and/or Python installation
- are now deferred until the first time you try to use Gundo, instead
- of being displayed on launch.
- * The <j> and <k> mappings are now configurable with
- g:gundo_map_move_older and g:gundo_map_move_newer.
- * The o, <Up> and <Down> keys are now mapped in the Gundo pane.
- * Improve and add several unit tests for Gundo.
- v2.0.0
- * Make GundoToggle close the Gundo windows if they're visible but not the
- current window, instead of moving to them.
- * Add the g:gundo_help setting.
- * Add the g:gundo_disable setting.
- * Add the 'p' mapping to preview the result of reverting to the selected
- state.
- * Fix movement commands with counts in the graph.
- v1.0.0
- * Initial stable release.
- ==============================================================================
- 8. 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.
- ==============================================================================
|