Bagaimana Anda menggunakan pohon perubahan di vim

14

Apakah mungkin untuk mengambil cabang perubahan yang saya "ditinggalkan"? Misalnya, saya membatalkan beberapa operasi menggunakan u, maka saya membuat perubahan dalam mode insert. Tetapi kemudian saya menyadari bahwa saya tidak ingin memiliki perubahan ini, saya lebih suka kembali ke tempat saya pada awalnya (sebelum kehancuran).

Apakah perubahan ini hilang selamanya?

Nebril
sumber

Jawaban:

12

Untuk menavigasi pohon undo, taruhan terbaik Anda adalah menggunakan plugin Gundo . Ini menciptakan jendela pemisahan baru dengan ikatan khusus untuk melompat ke cabang yang berbeda di dalam membatalkan pohon serta panel pratinjau yang menunjukkan kepada Anda apa yang berubah antara setiap node di pohon.

Steve Vermeulen
sumber
Pilihan lain adalah UndoTree.
musicmatze
12

Untuk kasus sederhana seperti ini, Anda cukup menekan g-.

Pada dasarnya, yang dilakukan adalah melintasi daftar perubahan secara kronologis (memperlakukan usebagai perubahan aktual), dan bukannya secara linear (seperti dengan u/ <C-r>).

Misalnya, jika Anda telah memasukkan beberapa baris, dan Anda menekan g-, ini terjadi:

demonstrasi

Gagang pintu
sumber
bagaimana Anda membuat animasi gif?
guido
4
@guido Saya menggunakan alat khusus yang disebut mkcast .
Gagang pintu
2

Tidak, Anda tidak dapat kembali dan maju di pohon. Cara terbaik adalah menggunakan plugin untuk pekerjaan ini.

Plugin lain adalah Undotree . Ini seperti Gundo , tetapi dengan beberapa perbedaan:

  1. Implementasi vimscript murni dan tidak ada perpustakaan pihak ketiga (seperti python) diperlukan, jangan khawatir tentang kinerja, itu bukan masalah besar bagi vim untuk menangani hal ini. Satu-satunya ketergantungan adalah alat 'diff' yang selalu dikirimkan dengan vim dan bahkan tanpa 'diff' Anda masih dapat menggunakan sebagian besar fitur skrip ini.
  2. Pembaruan realtime dibatalkan pohon. Setelah Anda membuat perubahan, pohon undo akan diperbarui secara bersamaan.
  3. Beberapa tanda yang bermanfaat, seperti perubahan saat ini, mengulangi perubahan berikutnya, perubahan yang disimpan, dll.
  4. Beralih antara stempel waktu relatif dan stempel waktu absolut.
  5. Pembaruan waktu nyata dibatalkan jendela.
  6. Kemampuan untuk menghapus riwayat.
  7. Lebih dapat disesuaikan.
adelarsq
sumber
4
Bukankah jawaban ini langsung dibantah oleh postingan gagang pintu ?
Caleb