Terlalu sering saya membuat kesalahan mengetik dengan fokus jendela yang salah (dan telah melakukannya beberapa kali dengan autentikator USB). Dalam program dengan banyak hotkey diaktifkan (Gmail, VLC, Vim), ini sering memiliki konsekuensi yang tidak diinginkan dari membuat modifikasi yang tidak diinginkan.
Terkadang saya dapat melacak langkah-langkah saya dan mengingat apa yang telah saya ketik untuk memperbaiki setiap perubahan atau mengembalikan pengaturan yang saya atur jika saya mengetahui diri saya lebih awal. Sayangnya, itu tidak selalu terjadi.
Di Vim, saya bisa memiliki sesuatu yang tidak berbahaya dan jelas seperti mengubah baris teks yang mudah dibatalkan. Atau, saya bisa saja secara tidak sengaja memodifikasi sesuatu yang tidak begitu mudah diidentifikasi. Jika saya secara tidak sengaja mengetik urutan perintah yang tidak diinginkan di Vim, bagaimana saya bisa mengecek dan membatalkan pengeditan atau perubahan pada pengaturan?
:e!
akan melakukan itu:e!
akan buruk jika Anda belum menyimpan sejak kondisi terakhir yang benar, danu
mungkin tidak cukup jika Anda mengetik banyak hal. (Jika Anda mengetikdate month
, misalnya, maka Anda akan menghapus tag, menetapkan tanda, dan melakukan pencarian, yang akan sangat membingungkan untuku
u
menjadi bagian dari urutan, melakukan beberapa undo di tengah.Jawaban:
Memohon
untuk melihat kapan Anda melakukan set perubahan terakhir. Jika dikatakan ada beberapa perubahan yang dibuat, misalnya, "3 detik yang lalu," dan Anda tahu bahwa Anda hanya sengaja mengubahnya, katakan, semenit yang lalu, kemudian jalankan
untuk kembali ke keadaan yang diinginkan. Kalau tidak, jika tidak ada perubahan terbaru, Anda tidak perlu melakukan apa pun.
Referensi lebih lanjut:
:help undo-tree
.sumber
Untuk mengulangi pertanyaan, Anda mencari cara untuk melihat atau mendapat pemberitahuan tentang perubahan yang Anda buat pada file, dan kemudian gunakan fitur undo. Mungkin ada cara lain atau bahkan plugin yang mendukung ini. Tetapi saya akan menjelaskan apa yang telah saya gunakan untuk tujuan yang sama.
Anda menggabungkan fitur vim yang ada untuk menyelesaikan ini. Misalnya, Anda dapat mendefinisikan fungsi seperti:
Anda kemudian dapat memanggilnya nanti dan bahkan memetakan tombol pintas.
Ini akan membuka tampilan berbeda berdasarkan jendela split yang akan menunjukkan Anda perubahan yang dibuat sejak penyimpanan terakhir. Setelah Anda mengidentifikasi perubahan yang dibuat, maka Anda dapat keluar dari tampilan itu dan menggunakan fitur vim lainnya seperti undo dan undo tree, dll. Atau bahkan plugin untuk kembali ke status sebelumnya.
Saya menyadari bahwa ini tidak ideal karena Anda harus memiliki jenis alur kerja tertentu agar ini berguna. Tetapi ini bekerja dengan cukup baik. Dan di sisi positifnya, kami tidak mengubah cara kerja vim atau mengandalkan apa pun di luar.
Saya harap Anda menemukan ini berguna. Saya mengadaptasi solusi ini beberapa waktu lalu dari cuplikan yang ditemukan di Internet termasuk vim Wikia. Jadi di situlah kredit jatuh tempo.
sumber
Bagi saya, jawaban sederhana untuk ini adalah menekan
u
sampai Anda membatalkan perubahan yang ingin Anda simpan, lalu tekanCtrl-R
.sumber
Seperti @superjer, saya terus menekan usampai
[+]
penanda merah di status saya menghilang.sumber
:e!
juga merupakan solusi yang bagus; hari ini Vim bahkan akan membuat perubahan "dibuang" Anda dalam sejarah undo.:earlier 1f
. The1f
berarti "1 state disimpan sebelumnya", sehingga akan kembali ke waktu sebelumnya Anda menyimpan file. Jika buffer diubah, maka itu membatalkan semua modifikasi. Jika buffer tidak diubah (yaitu, saat ini dalam keadaan disimpan), maka itu akan pergi ke waktu sebelumnya Anda menyimpan file.