Jeśli kiedykolwiek zapisałeś plik kopii zapasowej Emacsa, prawdopodobnie chcesz ich więcej, a nie mniej. To denerwujące, że znajdują się w tym samym katalogu co edytowany plik, ale łatwo to zmienić. Można dokonać kopii zapasowej wszystkich plików przejdź do katalogu, umieszczając coś jak poniżej w twojej
.emacs
.
(setq backup-directory-alist `(("." . "~/.saves")))
Istnieje wiele tajemniczych szczegółów związanych z tym, jak Emacs może tworzyć pliki kopii zapasowych. Czy powinien zmienić nazwę oryginału i wypisać edytowany bufor? Co jeśli oryginał jest połączony? Ogólnie najbezpieczniejszym, ale najwolniejszym zakładem jest zawsze tworzenie kopii zapasowych przez kopiowanie.
(setq backup-by-copying t)
Jeśli z jakiegoś powodu jest to zbyt wolne, możesz też rzucić okiem
backup-by-copying-when-linked
.
Ponieważ kopie zapasowe są teraz na swoim miejscu, możesz chcieć ich więcej, a nie mniej. Zajrzyj do dokumentacji Emacsa dla tych zmiennych (z C-h v
).
(setq delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
Wreszcie, jeśli absolutnie nie musisz mieć plików kopii zapasowej:
(setq make-backup-files nil)
Jednak myślę o tym, że jestem chory.
Pliki kopii zapasowej / automatycznego zapisywania programu Emacs mogą być bardzo pomocne. Ale te funkcje są mylące.
Kopia zapasowa
Pliki kopii zapasowych mają na końcu tyldy (
~
lub~9~
) i powinny zostać zapisane w katalogu osobistym użytkownika. Gdymake-backup-files
jest inny niż zero, Emacs automatycznie tworzy kopię zapasową oryginalnego pliku przy pierwszym zapisaniu pliku z bufora. Jeśli edytujesz nowy plik, Emacs utworzy kopię zapasową przy drugim zapisywaniu pliku.Bez względu na to, ile razy zapisujesz plik, kopia zapasowa pozostaje niezmieniona. Jeśli zabijesz bufor, a następnie ponownie odwiedzisz plik lub następnym razem, gdy rozpoczniesz nową sesję Emacsa, zostanie utworzony nowy plik kopii zapasowej. Nowa kopia zapasowa odzwierciedla zawartość pliku po ponownym otwarciu lub na początku sesji edycji. Ale istniejąca kopia zapasowa nigdy nie zostanie zmieniona. Dlatego uważam, że przydatne jest tworzenie numerowanych kopii zapasowych (patrz konfiguracja poniżej).
Aby utworzyć kopie zapasowe jawnie użyj
save-buffer
(C-x C-s
) z argumentami przedrostka.diff-backup
idired-diff-backup
porównuje plik z kopią zapasową lub odwrotnie. Ale nie ma funkcji przywracania plików kopii zapasowych. Na przykład w systemie Windows, aby przywrócić plik kopii zapasowejnależy go ręcznie skopiować jako
Automatyczne zapisywanie plików
Pliki automatycznego zapisywania używają skrótów (
#
) i powinny być zapisywane lokalnie w katalogu projektu (wraz z rzeczywistymi plikami). Powodem jest to, że pliki automatycznego zapisywania są tylko plikami tymczasowymi, które tworzy Emacs, dopóki plik nie zostanie zapisany ponownie (jak w przypadku pośpiesznego posłuszeństwa).C-x C-s
(save-buffer
), aby zapisać plik, Emacs automatycznie zapisuje pliki - na podstawie liczenia naciśnięć klawiszy (auto-save-interval
) lub gdy przestaniesz pisać (auto-save-timeout
).Gdy użytkownik zapisuje plik, automatycznie zapisana wersja jest usuwana. Ale gdy użytkownik zamknie plik bez zapisywania go, nastąpi awaria Emacsa lub sesji X, automatycznie zapisywane pliki nadal istnieją.
Użyj
revert-buffer
lub,recover-file
aby przywrócić pliki automatycznego zapisywania. Zauważ, że Emacs rejestruje przerwane sesje do późniejszego odzyskania w plikach o nazwie ~ / .emacs.d / auto-save-list .recover-session
Funkcja będzie wykorzystywać te informacje.Preferowaną metodą odzyskiwania z automatycznie zapisanego pliku jest
M-x revert-buffer RET
. Emacs zapyta: „Bufor został ostatnio automatycznie zapisany. Czy przywrócić plik automatycznego zapisywania?” lub „Czy przywrócić bufor z pliku FILENAME?”. W przypadku tego ostatniego nie ma pliku automatycznego zapisywania. Na przykład, ponieważ zapisałeś przed wpisaniem kolejnychauto-save-intervall
naciśnięć klawiszy, w którym to przypadku Emacs usunął plik automatycznego zapisywania.Automatyczne zapisywanie jest obecnie domyślnie wyłączone, ponieważ może spowolnić edycję po podłączeniu do wolnego komputera oraz ponieważ wiele plików zawiera poufne dane.
Konfiguracja
Oto konfiguracja, którą IMHO najlepiej działa:
Dane wrażliwe
Innym problemem jest to, że nie chcesz, aby Emacs rozpowszechniał kopie plików z poufnymi danymi. Używaj tego trybu dla poszczególnych plików. Ponieważ jest to tryb mniejszy, na moje potrzeby przemianowałem go
sensitive-minor-mode
.Aby włączyć to dla wszystkich plików .vcf i .gpg , w .emacs użyj czegoś takiego:
Alternatywnie, aby chronić tylko niektóre pliki, takie jak niektóre .txt , użyj linii podobnej do
w pliku.
źródło
diff
to plik z rzeczywistym plikiem. Następnie zwolnij Emacsa i sam dowiedz się, corevert-buffer
robi. W nagłych przypadkach zwróci się to szybko.Odpowiedź akceptowana jest dobra, ale może być znacznie poprawiona przez dodatkowo tworzenie kopii zapasowych na każdy Zapisz i tworzenia kopii zapasowych wersjonowanych plików .
Po pierwsze, podstawowe ustawienia opisane w zaakceptowanej odpowiedzi :
Następnie również wykonaj kopię zapasową plików, których Emacs domyślnie nie robi (nie zatwierdzasz przy każdym zapisie, prawda?):
Na koniec wykonaj kopię zapasową przy każdym zapisie, nie tylko pierwszym. Wykonujemy dwa rodzaje kopii zapasowych:
kopie zapasowe na sesję: raz przy pierwszym zapisie bufora w każdej sesji Emacsa. Symulują one domyślne zachowanie Emac do tworzenia kopii zapasowych.
kopie zapasowe na zapis: raz na każde zapisanie. Emacs domyślnie tego nie robi, ale jest to bardzo przydatne, jeśli pozostawisz Emacsa działającym przez długi czas.
Te kopie zapasowe iść w różnych miejscach i Emacs tworzy katalogi zapasowych automatycznie, jeśli nie istnieją:
Zainteresowałem się tym tematem po napisaniu
$<
zamiast$@
w moimMakefile
, około trzech godzin po moim poprzednim zatwierdzeniu: PPowyższe oparte jest na mocno edytowanej przeze mnie stronie Wiki Emacsa .
źródło
setq
s na górze mojej odpowiedzi? Powyższe działa dla mnie w Emacs 24.5.1.Innym sposobem konfigurowania opcji tworzenia kopii zapasowych jest interfejs Dostosuj. Wchodzić:
A następnie po
Customize group:
monicie wpiszbackup
.Jeśli przewiniesz do dolnej części bufora, zobaczysz Backup Directory Alist . Kliknij opcję Pokaż wartość i ustaw pierwszy wpis na liście w następujący sposób:
Alternatywnie, można włączyć tworzenie kopii zapasowych poza moim otoczeniu zrobić kopię zapasową plików do
off
.Jeśli nie chcesz, aby Emacs automatycznie edytować
.emacs
plik, musisz skonfigurować plik dostosowań .źródło
customize-group
2 lata temu. Dziękuję Ci!Możesz je całkowicie wyłączyć przez
źródło