Bagaimana cara mendapatkan vim untuk menyimpan riwayat pembatalannya?

36

Jika saya mengedit dua file dengan vim, mengubah ke file lain (: bnext,: bprev) tampaknya menghapus riwayat undo dari file yang terbuka - memukul laporan kunci 'u' "Sudah ada di perubahan tertua".

Sebagai contoh:

  1. vim testfile1 testfile2
  2. tambahkan beberapa hal ke testfile1
  3. :w
  4. :bn
  5. :bp
  6. u
  7. eep! tidak bisa membatalkan!

Apakah ada cara untuk menyimpan riwayat ini untuk buffer yang tidak terlihat?

Jeremy Kerr
sumber
haruskah ini di superuser atau stackoverflow?
Ressu
@Ressu - poin bagus, bagaimana kita tahu? Pertanyaan meta diposting: meta.ubuntu.stackexchange.com/questions/47/…
Jeremy Kerr
Bergantung pada hasil dari pertanyaan meta itu, saya cenderung menghapus ini.
Jeremy Kerr

Jawaban:

42

Versi terbaru vim (7.3) memiliki undo yang persisten, sehingga Anda dapat membuat perubahan, menutup vim sepenuhnya (bahkan shutdown dan restart), restart vim, dan undo. Di Anda .vimrc:

" tell it to use an undo file
set undofile
" set a directory to store the undo history
set undodir=/home/yourname/.vimundo/
luar biasa
sumber
11
Perhatikan bahwa Anda harus membuat direktori terlebih dahulu, vim tidak melakukannya secara otomatis. Undo file disimpan menggunakan jalur sistem file (pada saat yang sama saat menyimpan file). Jika Anda masuk /home/peter, maka pengeditan .bashrcakan membuat file /home/peter/.vimundo/%home%peter%.bashrc.
Lekensteyn
19

Sepertinya ini akan melakukannya:

:set hidden

(dalam .vimrc)

Jeremy Kerr
sumber
1

Anda dapat menggunakan Viewports .
"vim -o testfile1 testfile2" - buka file di jendela terpisah.
": sp filename" - pisah dan buka "filename".
": vsp filename" - perpecahan vertikal dan buka "filename".
"Ctrl + w + panah" - Ubah viewport.

kamu dulu
sumber
Saya lebih suka tidak menyimpan buffer yang terlihat secara permanen untuk setiap file; bukan tidak biasa memiliki> 20 file yang terbuka sekaligus.
Jeremy Kerr