Salah satu fitur baru di Vim 7.3 adalah 'persistent undo', yang memungkinkan undotree untuk disimpan ke file saat keluar dari buffer.
Sayangnya, saya belum bisa mengaktifkannya dengan benar, atau saya pasti salah menggunakannya. Inilah yang saya coba sejauh ini:
Saya menambahkan yang berikut ini ke ~ / .vimrc
set undofile " Save undos after file closes
set undodir=$HOME/.vim/undo " where to save undo histories
set undolevels=1000 " How many undos
set undoreload=10000 " number of lines to save for undo
Setelah ini, saya seharusnya dapat membuka file apa pun, mengeditnya, lalu menyimpan-menutupnya, dan ketika saya membukanya lagi saya harus dapat membatalkan / mengulang seolah-olah saya tidak akan pernah pergi. Sayangnya, tampaknya tidak demikian, karena tidak ada undofile yang pernah ditulis.
Catatan:
Saya menggunakan Win 7 menggunakan Vim 7.3 dari proyek Vim tanpa krim. Pengurungan yang terus-menerus telah dipanggang.
$ HOME / .vim / undo ada di sistem file saya
mkdir ~/.vim/undo
Jawaban:
Masukkan ini ke dalam Anda
.vimrc
untuk membuatundodir
jika tidak ada dan aktifkan pembatalan terus-menerus. Diuji pada Windows dan Linux.sumber
:silent call system('mkdir -p ' . &undodir)
&
karena sayaset
yangundodir
bukanlet
ting itu. (Dalam pikiran saya, perbedaan antaralet
danset
merupakan salah satu dari banyak, banyak, banyak "fitur" Vimscript yang sangat mencengangkan, tetapi YMMV.).vim
jika tidak ada. Sayangnya-p
bendera tidak ada di Windows jadi saya mengedit jawaban untuk meneleponmkdir
dua kali untuk memastikan kompatibilitas Windows.-p
bendera sebenarnya untuk menghindari kesalahan saat direktori ada. Saya memiliki perintah saya di dalamif has('win32')
blok, jadi saya hanya menggunakanmkdir
tanpa-p
di Windows.mkdir()
? Maka ini bisa menjadi:call mkdir(myUndoDir, 'p')
:, yang berperilaku sepertimkdir -p
.Saya mencoba ini di _gvimrc saya:
Ini mulai berfungsi seperti yang diiklankan ketika saya menghapus braket try-catch, dengan demikian:
Saya harus membuat direktori.
sumber
if has('persistent_undo')
silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1
set undodir=~/.config/nvim/backups
endif
"menambahkan pesan berkomentar untuk menambah panjang pesanSaya kira $ HOME tidak berfungsi seperti yang diiklankan.
Di sistem saya,
:echo $HOME
menunjukkan H: \, tetapi: e $HOME/
mengatakan:~/
nama file tidak valid.Anda dapat mencoba dengan jalur absolut untuk melihat apakah itu menyembuhkannya
sumber
$TEMP
. Ketika saya melihatnya,set undodir?
itu terlihat~/AppData/Local/Temp
. Berkas urung tetap ada dan dimuat sendiri dengan benar. Mungkin$TEMP
akan lebih bisa diandalkan?Ini sekarang bekerja seperti yang diharapkan:
file.txt
buka di buffer Vim 7.4 di Windows 7,:setlocal undofile
lalu simpan perubahan ke buffer, dan undofile.file.txt.un~
dibuat bersamaan karena:set undodir?
melaporkan bahwa "undodir =." secara default - yaitu tidak perlu menentukan ini secara manual. Anda juga bisa:set undofile
di modeline.sumber