Jak uzyskać vima, aby zachować historię cofania?

36

Jeśli edytuję dwa pliki za pomocą vima, zmiana na inny plik (: bnext,: bprev) wydaje się usuwać historię cofania z otwartego pliku - naciśnięcie klawisza „u” zgłasza „Już przy najstarszej zmianie”.

Na przykład:

  1. vim testfile1 testfile2
  2. dodaj kilka rzeczy do pliku testowego1
  3. :w
  4. :bn
  5. :bp
  6. u
  7. eep! nie można cofnąć!

Czy jest jakiś sposób na zachowanie tej historii dla niewidocznych buforów?

Jeremy Kerr
źródło
czy powinno to być w superużytkowniku czy przepełnieniu stosu?
Ressu,
@Ressu - dobry punkt, jak to powiedzieć? Meta pytanie wysłane: meta.ubuntu.stackexchange.com/questions/47/…
Jeremy Kerr
W zależności od wyniku tego meta pytania prawdopodobnie to usunę.
Jeremy Kerr

Odpowiedzi:

42

Najnowsza wersja vima (7.3) ma trwałe cofanie, dzięki czemu możesz dokonać zmiany, całkowicie zamknąć vim (nawet zamknąć i zrestartować), zrestartować vim i cofnąć. W twoim .vimrc:

" tell it to use an undo file
set undofile
" set a directory to store the undo history
set undodir=/home/yourname/.vimundo/
frabjous
źródło
11
Zauważ, że musisz najpierw utworzyć katalog, vim nie robi tego automatycznie. Cofnij pliki są zapisywane przy użyciu ścieżki systemu plików (w tym samym czasie podczas zapisywania pliku). Jeśli tam jesteś /home/peter, edycja .bashrcutworzy plik /home/peter/.vimundo/%home%peter%.bashrc.
Lekensteyn,
19

Wygląda na to, że to zrobi:

:set hidden

(w .vimrc)

Jeremy Kerr
źródło
1

Możesz użyć rzutni .
„vim -o testfile1 testfile2” - otwieraj pliki w podzielonym oknie.
„: sp nazwa pliku” - podziel i otwórz „nazwa pliku”.
„: vsp nazwa pliku” - podział pionowy i otwarcie „nazwa pliku”.
„Ctrl + w + strzałka” - Zmień rzutnię.

Jewhene
źródło
Wolałbym nie przechowywać stale widocznego bufora dla każdego pliku; nie jest niczym niezwykłym, aby otworzyć jednocześnie> 20 plików.
Jeremy Kerr