/usr/share/vim/vim80/doc
NameSizeModeActions
arabic.txt119360644editdlrm
autocmd.txt654020644editdlrm
change.txt748770644editdlrm
channel.txt308190644editdlrm
cmdline.txt472830644editdlrm
debug.txt71820644editdlrm
debugger.txt57440644editdlrm
develop.txt223440644editdlrm
diff.txt165250644editdlrm
digraph.txt621230644editdlrm
editing.txt731760644editdlrm
eval.txt4444620644editdlrm
farsi.txt97030644editdlrm
filetype.txt266470644editdlrm
fold.txt236940644editdlrm
ft_ada.txt182470644editdlrm
ft_rust.txt95260644editdlrm
ft_sql.txt306940644editdlrm
gui.txt455920644editdlrm
gui_w32.txt189160644editdlrm
gui_x11.txt294800644editdlrm
hangulin.txt32910644editdlrm
hebrew.txt57140644editdlrm
help.txt85780644editdlrm
helphelp.txt143380644editdlrm
howto.txt29110644editdlrm
if_cscop.txt193610644editdlrm
if_lua.txt146420644editdlrm
if_mzsch.txt118230644editdlrm
if_ole.txt74050644editdlrm
if_perl.txt111490644editdlrm
if_pyth.txt379440644editdlrm
if_ruby.txt80140644editdlrm
if_sniff.txt2660644editdlrm
if_tcl.txt230260644editdlrm
indent.txt394270644editdlrm
index.txt764430644editdlrm
insert.txt831560644editdlrm
intro.txt392260644editdlrm
map.txt646680644editdlrm
mbyte.txt593060644editdlrm
message.txt312300644editdlrm
mlang.txt78500644editdlrm
motion.txt516020644editdlrm
netbeans.txt369980644editdlrm
options.txt3891160644editdlrm
os_390.txt47530644editdlrm
os_amiga.txt54610644editdlrm
os_beos.txt109830644editdlrm
os_dos.txt120210644editdlrm
os_mac.txt68510644editdlrm
os_mint.txt14020644editdlrm
os_msdos.txt5180644editdlrm
os_os2.txt2940644editdlrm
os_qnx.txt40710644editdlrm
os_risc.txt3230644editdlrm
os_unix.txt25950644editdlrm
os_vms.txt321000644editdlrm
os_win32.txt133480644editdlrm
pattern.txt593210644editdlrm
pi_getscript.txt210780644editdlrm
pi_gzip.txt13210644editdlrm
pi_logipat.txt41860644editdlrm
pi_netrw.txt1755500644editdlrm
pi_paren.txt22690644editdlrm
pi_spec.txt41220644editdlrm
pi_tar.txt62230644editdlrm
pi_vimball.txt118530644editdlrm
pi_zip.txt72290644editdlrm
print.txt311580644editdlrm
quickfix.txt690210644editdlrm
quickref.txt712560644editdlrm
quotes.txt127430644editdlrm
recover.txt106940644editdlrm
remote.txt84200644editdlrm
repeat.txt395730644editdlrm
rileft.txt49760644editdlrm
russian.txt30900644editdlrm
scroll.txt140710644editdlrm
sign.txt68910644editdlrm
spell.txt627810644editdlrm
sponsor.txt71980644editdlrm
starting.txt736220644editdlrm
syntax.txt2174710644editdlrm
tabpage.txt167200644editdlrm
tags3288320644editdlrm
tagsrch.txt366360644editdlrm
term.txt454160644editdlrm
terminal.txt335670644editdlrm
tips.txt205560644editdlrm
todo.txt2962680644editdlrm
uganda.txt140240644editdlrm
undo.txt165390644editdlrm
usr_01.txt70900644editdlrm
usr_02.txt243390644editdlrm
usr_03.txt236050644editdlrm
usr_04.txt190820644editdlrm
usr_05.txt238240644editdlrm
usr_06.txt95870644editdlrm
usr_07.txt159840644editdlrm
usr_08.txt193740644editdlrm
usr_09.txt114500644editdlrm
usr_10.txt291800644editdlrm
usr_11.txt126110644editdlrm
usr_12.txt134240644editdlrm
usr_20.txt137030644editdlrm
usr_21.txt183730644editdlrm
usr_22.txt142970644editdlrm
usr_23.txt125880644editdlrm
usr_24.txt208690644editdlrm
usr_25.txt191140644editdlrm
usr_26.txt82540644editdlrm
usr_27.txt177230644editdlrm
usr_28.txt160150644editdlrm
usr_29.txt201160644editdlrm
usr_30.txt226560644editdlrm
usr_31.txt103940644editdlrm
usr_32.txt53730644editdlrm
usr_40.txt231840644editdlrm
usr_41.txt893010644editdlrm
usr_42.txt137980644editdlrm
usr_43.txt74040644editdlrm
usr_44.txt292110644editdlrm
usr_45.txt179120644editdlrm
usr_90.txt176610644editdlrm
usr_toc.txt92180644editdlrm
various.txt288520644editdlrm
version4.txt139060644editdlrm
version5.txt3085430644editdlrm
version6.txt5770520644editdlrm
version7.txt6747660644editdlrm
version8.txt6842520644editdlrm
visual.txt218430644editdlrm
vi_diff.txt428120644editdlrm
windows.txt530300644editdlrm
workshop.txt46310644editdlrm
Edit: /usr/share/vim/vim80/doc/usr_32.txt (5373B)
*usr_32.txt* For Vim version 8.0. Last change: 2010 Jul 20 VIM USER MANUAL - by Bram Moolenaar The undo tree Vim provides multi-level undo. If you undo a few changes and then make a new change you create a branch in the undo tree. This text is about moving through the branches. |32.1| Undo up to a file write |32.2| Numbering changes |32.3| Jumping around the tree |32.4| Time travelling Next chapter: |usr_40.txt| Make new commands Previous chapter: |usr_31.txt| Exploiting the GUI Table of contents: |usr_toc.txt| ============================================================================== *32.1* Undo up to a file write Sometimes you make several changes, and then discover you want to go back to when you have last written the file. You can do that with this command: > :earlier 1f The "f" stands for "file" here. You can repeat this command to go further back in the past. Or use a count different from 1 to go back faster. If you go back too far, go forward again with: > :later 1f Note that these commands really work in time sequence. This matters if you made changes after undoing some changes. It's explained in the next section. Also note that we are talking about text writes here. For writing the undo information in a file see |undo-persistence|. ============================================================================== *32.2* Numbering changes In section |02.5| we only discussed one line of undo/redo. But it is also possible to branch off. This happens when you undo a few changes and then make a new change. The new changes become a branch in the undo tree. Let's start with the text "one". The first change to make is to append " too". And then move to the first 'o' and change it into 'w'. We then have two changes, numbered 1 and 2, and three states of the text: one ~ | change 1 | one too ~ | change 2 | one two ~ If we now undo one change, back to "one too", and change "one" to "me" we create a branch in the undo tree: one ~ | change 1 | one too ~ / \ change 2 change 3 | | one two me too ~ You can now use the |u| command to undo. If you do this twice you get to "one". Use |CTRL-R| to redo, and you will go to "one too". One more |CTRL-R| takes you to "me too". Thus undo and redo go up and down in the tree, using the branch that was last used. What matters here is the order in which the changes are made. Undo and redo are not considered changes in this context. After each change you have a new state of the text. Note that only the changes are numbered, the text shown in the tree above has no identifier. They are mostly referred to by the number of the change above it. But sometimes by the number of one of the changes below it, especially when moving up in the tree, so that you know which change was just undone. ============================================================================== *32.3* Jumping around the tree So how do you get to "one two" now? You can use this command: > :undo 2 The text is now "one two", you are below change 2. You can use the |:undo| command to jump to below any change in the tree. Now make another change: change "one" to "not": one ~ | change 1 | one too ~ / \ change 2 change 3 | | one two me too ~ | change 4 | not two ~ Now you change your mind and want to go back to "me too". Use the |g-| command. This moves back in time. Thus it doesn't walk the tree upwards or downwards, but goes to the change made before. You can repeat |g-| and you will see the text change: me too ~ one two ~ one too ~ one ~ Use |g+| to move forward in time: one ~ one too ~ one two ~ me too ~ not two ~ Using |:undo| is useful if you know what change you want to jump to. |g-| and |g+| are useful if you don't know exactly what the change number is. You can type a count before |g-| and |g+| to repeat them. ============================================================================== *32.4* Time travelling When you have been working on text for a while the tree grows to become big. Then you may want to go to the text of some minutes ago. To see what branches there are in the undo tree use this command: > :undolist < number changes time ~ 3 2 16 seconds ago 4 3 5 seconds ago Here you can see the number of the leaves in each branch and when the change was made. Assuming we are below change 4, at "not two", you can go back ten seconds with this command: > :earlier 10s Depending on how much time you took for the changes you end up at a certain position in the tree. The |:earlier| command argument can be "m" for minutes, "h" for hours and "d" for days. To go all the way back use a big number: > :earlier 100d To travel forward in time again use the |:later| command: > :later 1m The arguments are "s", "m" and "h", just like with |:earlier|. If you want even more details, or want to manipulate the information, you can use the |undotree()| function. To see what it returns: > :echo undotree() ============================================================================== Next chapter: |usr_40.txt| Make new commands Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: