Item berita terakhir di vim.org berbicara tentang penggunaan 'undofile' untuk menyimpan riwayat Anda dan membatalkan perubahan bahkan setelah reboot:
Fitur yang saya nikmati menggunakan diri saya sendiri tidak diketahui banyak pengguna, seperti yang saya temukan akhir pekan lalu. Selain membatalkan dengan level sebanyak yang Anda suka, Vim juga menawarkan penyimpanan informasi undo dalam file. Jadi Anda dapat keluar dari Vim, reboot komputer Anda dan masih membatalkan perubahan yang Anda buat. Lihat bantuan untuk 'undofile'. (Bram Moolenaar)
Bagaimana saya bisa mengaktifkan dan menggunakan fitur ini?
persistent-state
undo-redo
Batalkan
sumber
sumber
Jawaban:
Versi paling sederhana adalah: buat
~/.vim/undo-dir/
direktori dan tambahkan berikut ini ke.vimrc
:Namun, ini bukan tanpa cacat, dan lebih baik dibaca terus. Dari saya sendiri
.vimrc
:Saya lebih suka untuk tidak mengacaukan direktori acak dengan membatalkan file. Jadi saya mengatur
undodir
opsi, yang menempatkan semuanya dalam satu direktori undo. Itu menyisakan satu masalah — saya malas, dan tidak merasa ingin membuat direktori itu di semua mesin saya (saya menggunakan sistem kontrol versi untuk menyinkronkan saya.vimrc
di banyak mesin). Untungnya, cukup mudah untuk memiliki Vim memeriksa dan membuat direktori jika tidak ada.Perhatikan juga
0700
mode pada direktori undo (itu izin penuh untuk pemilik, tidak ada izin untuk orang lain). File mana yang saya edit, kapan, dll. Harus tetap pribadi. Dan karena ini adalah direktori yang hanya dapat saya akses, saya tidak perlu khawatir tentang orang lain yang meletakkan symlink di sana, atau file undo mereka sendiri, atau apa pun yang Anda harus khawatir tentang menggunakan direktori sementara sistem.Akhirnya, tidak menjadi direktori sistem sementara, itu tidak tunduk pada kebijakan pembersihan tempfile sistem. Seringkali, itu cukup singkat — sekitar seminggu. Tetapi agar tidak tumbuh selamanya, saya memasukkan yang berikut ini ke dalam
crontab
:Jadi setelah 90 hari tidak dimodifikasi, mereka dihapus. (Jujur, mereka tidak terlalu besar, Anda dapat dengan mudah meninggalkan mereka selamanya dengan betapa murahnya disk. Tetapi pertimbangkan juga privasi Anda sendiri jika mesin Anda pernah dikompromikan.)
sumber
mkdir()
fungsi mendukung pembuatan beberapa struktur direktori dengan"p"
opsi untuk{path}
parameter. Jadi skrip di atas bisa disederhanakan sedikit. Menggunakancall mkdir($HOME."/.vim/undo-dir", "p", 0700)
karya untuk saya di Vim 7.4.160 setidaknya.