Jawaban ini mengatakan:
Sistem undo / redo Vim tidak terkalahkan. Ketik sesuatu, batalkan, ketikkan sesuatu yang lain, dan Anda masih bisa mendapatkan kembali hal pertama yang Anda ketikkan karena Vim menggunakan pohon undo daripada tumpukan. Di hampir setiap program lain, sejarah hal pertama yang Anda ketikkan hilang dalam keadaan ini.
Ini adalah yang pertama saya dengar. Bagaimana saya bisa mundur di sepanjang pohon?
Jawaban:
Lihat juga
:h undo-redo
, yang mencantumkan semua perintah dan penggunaannya.Ada dua cara untuk melintasi pohon undo. Salah satunya adalah untuk "mundur dalam waktu".
g+
dang-
akan melintasi semua node di pohon dalam urutan kronologis atau terbalik-kronologis (yang bisa sedikit membingungkan, karena dapat melompat secara sewenang-wenang di antara membatalkan cabang, tetapi jika Anda melakukang-
cukup lama Anda akan selalu mendapatkan di mana Anda harus pergi akhirnya).:earlier
dan:later
luangkan waktu deskriptor seperti7m
atau1h
; sekali lagi ini dapat melompat Anda secara acak antara membatalkan cabang.Cara lain adalah dengan melompat ke node tertentu di pohon menggunakan di
:undo n
manan
sejumlah tindakan. (Semua tindakan, yaitu penambahan teks, penghapusan, penggantian, diberi nomor secara berurutan saat Anda melakukannya.) Anda dapat mencari jumlah tindakan pada daun dari pohon yang dibatalkan melalui:undolist
. Ini akan memungkinkan Anda melompat di antara cabang dengan mudah. Anda kemudian dapat menggunakanu
danCtrl-R
untuk bergerak naik dan turun cabang itu.Ada beberapa contoh yang baik dalam bantuan Vim. Cara terbaik untuk mengetahui cara kerjanya adalah dengan sedikit bermain dengannya.
sumber
undojoin
tidak ada hubungannya dengan cabang; pada kenyataannya, bagian bantuan berikutnya dimulai dengan mengatakan "Di atas kita hanya membahas satu baris undo / redo. Tetapi juga dimungkinkan untuk bercabang." Apakah ada cara untuk menggunakanundojoin
cabang yang tidak saya lihat?Saya agak terlambat ke pesta, tapi saya pikir saya akan menyebutkan bahwa saya menulis plugin visualisasi undo tree untuk Vim: http://bitbucket.org/sjl/gundo.vim/
Secara pribadi saya menemukan bahwa grafik pohon seperti ini adalah satu-satunya cara saya bisa memahaminya.
sumber
Plug 'sjl/gundo.vim'
dan kemudiannnoremap <F5> :GundoToggle<CR>
(mengganti<F5>
dengan urutan tombol apa pun yang ingin Anda ikat)Halaman ini menjelaskan semua yang perlu Anda ketahui:
http://vimdoc.sourceforge.net/htmldoc/usr_32.html
sumber
Jika Anda menggunakan vim, Anda dapat menavigasi melalui pohon undo menggunakan:
u
: (undo) kembali ke pohon undoCtrl+R
: (redo) bergerak maju di pohon undoCara lain untuk membawa dokumen kembali atau maju dalam waktu:
:earlier 15m
: mundur dalam waktu 15 menit:later 15m
: bergerak maju dalam waktu 15 menitsumber
earlier
danlater
tidak bergerak melintasi cabang. Saya berharap kebanyakan orang tidak terlalu peduli atau mengingat berbagai cabang yang mereka buat. Tetapi hanya ingin kembali ke masa lalu. Jika Anda ingin membuat cabang dan memberi nama mereka mungkingit
atau sistem kontrol versi adalah pilihan yang lebih baik.Saya sadar pertanyaan ini telah dijawab, tetapi saya pikir saya akan menambahkan contoh.
Buat file baru dan ketik:
undol
akan menampilkan pohon undo. Pada titik ini Anda belum membatalkan apa punsekarang tekan ESC dan ubah jalur ke:
beralih ke mode normal dan tekan u (batalkan), ini harus menghapus "lama". Jika Anda memeriksa
undol
, pada titik ini Anda masih memiliki hanya satu cabang.sekarang modifikasi baris sehingga dikatakan:
Sekarang
:undol
menunjukkan:Anda dapat beralih ke cabang pertama dengan mengetik
ini akan memindahkan Anda ke ujung cabang yang terkait dengan angka 2. Anda dapat bergerak di sepanjang cabang ini dengan
g+
dang-
. Pada titikg+
ini tidak akan melakukan apa-apa (Anda berada di daun). Jika Anda menekang-
"old" akan dihapus (Anda melintasi pohon undo pertama). Itu adalah jika Anda menghapus "old" dengang-
dan tekang+
lagi, "old" akan diulang.Jika Anda mengetik
Anda akan melompat ke daun cabang undo kedua dan akan berbunyi:
sumber
Banyak dari ini disimpulkan di sini:
http://vim.wikia.com/wiki/Using_undo_branches
sumber
Selain menggunakan gundo.vim saya suka menyebutkan
g+
dang-
sumber
Paket undotree ditulis dalam vimscript murni sehingga tidak ada persyaratan.
Dan tambahkan ini ke vimrc Anda sebelum terlambat:
sumber