답변:
Emacs 백업 파일로 저장 한 적이 있다면 더 많은 파일을 원할 것입니다. 편집중인 파일과 동일한 디렉토리에 들어가는 것은 성가 시지만 변경하기 쉽습니다. 에 다음과 같은 것을 넣어 모든 백업 파일을 디렉토리로 만들 수 있습니다
.emacs
.
(setq backup-directory-alist `(("." . "~/.saves")))
Emacs가 백업 파일을 작성하는 방법과 관련된 많은 세부 정보가 있습니다. 원본의 이름을 바꾸고 편집 된 버퍼를 작성해야합니까? 원본이 연결되면 어떻게됩니까? 일반적으로 가장 안전하지만 가장 느린 방법은 항상 복사하여 백업하는 것입니다.
(setq backup-by-copying t)
어떤 이유로 든 너무 느리다면을 살펴볼 수도 있습니다
backup-by-copying-when-linked
.
이제 백업이 모두 자신의 위치에 있기 때문에 적은 것이 아니라 더 많은 것을 원할 수 있습니다. 이러한 변수에 대한 Emacs 설명서를 살펴보십시오 (로 C-h v
).
(setq delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
마지막으로 백업 파일이 없어야하는 경우 :
(setq make-backup-files nil)
그래도 생각이 아프다.
Emacs 백업 / 자동 저장 파일은 매우 유용 할 수 있습니다. 그러나 이러한 기능은 혼동됩니다.
백업 파일
백업 파일은 끝에 물결표 ( ~
또는 ~9~
)가 있으며 사용자 홈 디렉토리에 기록됩니다. make-backup-files
non-nil이 아닌 경우 Emacs는 파일이 버퍼에서 처음 저장 될 때 자동으로 원본 파일의 백업을 작성합니다. 새 파일을 편집하는 경우 Emacs는 파일을 다시 저장할 때 백업을 생성합니다.
파일을 몇 번 저장하더라도 백업은 변경되지 않습니다. 버퍼를 종료 한 다음 파일을 다시 방문하거나 다음에 새 Emacs 세션을 시작하면 새 백업 파일이 작성됩니다. 새 백업은 파일을 다시 연 후 또는 편집 세션을 시작할 때 파일 내용을 반영합니다. 그러나 기존 백업은 다시는 손대지 않습니다. 따라서 번호가 매겨진 백업을 만드는 것이 유용하다는 것을 알았습니다 (아래 구성 참조).
백업을 명시 적으로 만들려면 접두사 인수와 함께 save-buffer
( C-x C-s
)를 사용하십시오 .
diff-backup
dired-diff-backup
파일을 백업 과 비교하거나 그 반대로도 비교합니다. 그러나 백업 파일을 복원하는 기능은 없습니다. 예를 들어, Windows에서 백업 파일을 복원하려면
C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~
수동으로 복사해야합니다
C:\Users\USERNAME\.emacs.el
파일 자동 저장
자동 저장 파일은 해시 마크 ( #
)를 사용 하며 프로젝트 디렉토리 내에 로컬로 작성해야합니다 (실제 파일과 함께). 그 이유는 자동 저장 파일은 파일이 다시 저장 될 때까지 Emacs가 만드는 임시 파일 일뿐입니다 (서둘러 순종하는 것처럼).
C-x C-s
( save-buffer
)을 눌러 파일을 저장 하기 전에 Emacs는 키 입력 횟수 ( auto-save-interval
) 또는 입력을 중지 할 때 ( )를 기준으로 파일을 자동 저장합니다 auto-save-timeout
.사용자가 파일을 저장하면 자동 저장된 버전이 삭제됩니다. 그러나 사용자가 파일을 저장하지 않고 종료하면 Emacs 또는 X 세션이 충돌하더라도 자동 저장된 파일이 여전히 존재합니다.
자동 저장 파일을 복원 하려면 revert-buffer
또는 recover-file
을 사용하십시오 . Emacs는 ~ / .emacs.d / auto-save-list 라는 파일에 나중에 복구하기 위해 중단 된 세션을 기록 합니다 . recover-session
함수는이 정보를 사용합니다.
자동 저장된 파일에서 복구하는 기본 방법은 M-x revert-buffer RET
입니다. Emacs는 "버퍼가 최근에 자동 저장되었습니다. 자동 저장 파일에서 되돌리기?" 또는 "FILENAME 파일에서 버퍼를 되 돌리시겠습니까?" 후자의 경우 자동 저장 파일이 없습니다. 예를 들어, 다른 auto-save-intervall
키 입력을 입력하기 전에 저장했기 때문에 Emacs가 자동 저장 파일을 삭제했습니다.
현재 자동 저장은 느린 컴퓨터에 연결될 때 편집 속도가 느려질 수 있고 많은 파일에 중요한 데이터가 포함되어 있기 때문에 기본적으로 비활성화되어 있습니다.
구성
IMHO가 가장 잘 작동하는 구성은 다음과 같습니다.
(defvar --backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --backup-directory))
(make-directory --backup-directory t))
(setq backup-directory-alist `(("." . ,--backup-directory)))
(setq make-backup-files t ; backup of a file the first time it is saved.
backup-by-copying t ; don't clobber symlinks
version-control t ; version numbers for backup files
delete-old-versions t ; delete excess backup files silently
delete-by-moving-to-trash t
kept-old-versions 6 ; oldest versions to keep when a new numbered backup is made (default: 2)
kept-new-versions 9 ; newest versions to keep when a new numbered backup is made (default: 2)
auto-save-default t ; auto-save every buffer that visits a file
auto-save-timeout 20 ; number of seconds idle time before auto-save (default: 30)
auto-save-interval 200 ; number of keystrokes between auto-saves (default: 300)
)
민감한 데이터
또 다른 문제는 Emacs가 민감한 데이터를 가진 파일의 사본을 확산시키지 않기를 원한다는 것입니다. 파일별로이 모드 를 사용하십시오 . 이것이 마이너 모드이므로 내 목적으로 이름을 바꿨습니다 sensitive-minor-mode
.
모든 .vcf 및 .gpg 파일에 대해 활성화하려면 .emacs에서 다음과 같은 것을 사용하십시오.
(setq auto-mode-alist
(append
(list
'("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
)
auto-mode-alist))
또는 일부 .txt 파일 과 같은 일부 파일 만 보호 하려면 다음과 같은 줄을 사용하십시오.
// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-
파일에서.
diff
있으면 실제 파일과 함께 저장 하십시오. 그런 다음 Emacs를 실행하고 자신이하는 일을 스스로 알아보십시오 revert-buffer
. 응급 상황이 발생하면 신속하게 보상합니다.
허용 대답은 좋지만, 크게 추가로 향상시킬 수 에 백업하는 모든 저장 및 백업 버전 파일을 .
먼저 허용 된 답변에 설명 된 기본 설정 :
(setq version-control t ;; Use version numbers for backups.
kept-new-versions 10 ;; Number of newest versions to keep.
kept-old-versions 0 ;; Number of oldest versions to keep.
delete-old-versions t ;; Don't ask to delete excess backup versions.
backup-by-copying t) ;; Copy all files, don't rename them.
다음으로, Emacs가 기본적으로 수행하지 않는 백업 버전 파일도 있습니다 (매번 저장시 커밋하지 않습니까?).
(setq vc-make-backup-files t)
마지막으로 첫 번째 저장뿐만 아니라 각 저장시 백업을 수행하십시오. 우리는 두 종류의 백업을 만듭니다 :
세션 별 백업 : 각 Emacs 세션에서 첫 번째 버퍼 저장시 한 번 . 이들은 Emac의 기본 백업 동작을 시뮬레이션합니다.
저장 당 백업 : 저장할 때마다 한 번씩 . Emacs는 기본적으로이 작업을 수행하지 않지만 Emacs를 오랫동안 실행 상태로두면 매우 유용합니다.
백업은 다른 장소에서 이동 및 이맥스가 존재하지 않는 경우 자동으로 백업 DIRS를 만듭니다
;; Default and per-save backups go here:
(setq backup-directory-alist '(("" . "~/.emacs.d/backup/per-save")))
(defun force-backup-of-buffer ()
;; Make a special "per session" backup at the first save of each
;; emacs session.
(when (not buffer-backed-up)
;; Override the default parameters for per-session backups.
(let ((backup-directory-alist '(("" . "~/.emacs.d/backup/per-session")))
(kept-new-versions 3))
(backup-buffer)))
;; Make a "per save" backup on each save. The first save results in
;; both a per-session and a per-save backup, to keep the numbering
;; of per-save backups consistent.
(let ((buffer-backed-up nil))
(backup-buffer)))
(add-hook 'before-save-hook 'force-backup-of-buffer)
내가 쓴 후 나는이 주제에 매우 관심을 갖게 $<
대신
$@
내에서 Makefile
내 이전 후 3 수 시간이 커밋 : P를
위의 내용은 내가 편집 한 Emacs Wiki 페이지를 기반으로합니다 .
setq
습니까? 위의 내용은 Emacs 24.5.1에서 작동합니다.
백업 옵션을 구성하는 다른 방법은 사용자 정의 인터페이스를 사용하는 것입니다. 시작하다:
M-x customize-group
그런 다음 Customize group:
프롬프트에서을 입력하십시오 backup
.
버퍼의 맨 아래로 스크롤하면 Backup Directory Alist가 나타납니다 . 값 표시를 클릭 하고 다음과 같이 목록의 첫 번째 항목을 설정하십시오.
Regexp matching filename: .*
Backup directory name: /path/to/your/backup/dir
양자 택일로, 당신은 내 설정 해제 백업을 설정할 수 있습니다 백업 파일을 확인 하기 위해 off
.
Emacs가 .emacs
파일 을 자동으로 편집하지 못하게하려면 사용자 화 파일을 설정해야합니다 .
customize-group
2 년 전에 알고 있었으면 좋겠다 . 감사합니다!
당신은 그들에 의해 그들을 완전히 비활성화 할 수 있습니다
(setq make-backup-files nil)