버퍼 사본을 파일에 저장하는 방법?


9

버퍼의 사본 (또는 스냅 샷)을 파일로 저장하고 싶습니다. 이 파일을 방문하도록 버퍼를 설정 하지 않는다는write-file 점을 제외하면 동작은와 유사 합니다.

유스 케이스의 경우, 쉘 세션이 있고이를 모두 로그 파일에 빠르게 저장하려고한다고 가정하십시오. 버퍼 이름을 바꾸면 (버퍼 이름에 의존하는 기능이 여전히 작동 함), 파일을 방문하지 않아야합니다 (파일이 실수로 덮어 쓰여지지 않고 emacs를 종료 할 때 경고가 표시되지 않아야 함).

이 작업을 수행하는 몇 가지 더러운 방법을 상상할 수 있습니다. 하나는 자체 답변으로 게시하지만 매뉴얼을 읽으면 전체 "방문한 파일"시스템이보기보다 복잡하므로 초안 작성이 쉬운 것 같습니다. 잘못된 해결책. 숨겨진 기본 제공 방법이 있습니까?

답변:


18

전체 버퍼 ( C-x h)를 선택 하고를 사용하십시오 write-region.


3
write-regionLisp에서 사용 하는 경우 (예 : 자체 명령으로) 버퍼 텍스트를 선택할 필요가 없습니다 . 파일 이름과 함께 (point-min)및을 전달하십시오 (point-max).
Drew

2
C-x h M-x write-region
Jakub Narębski

select 버퍼와 실제 M-x write-region명령에 감사드립니다 .
그랜트 보 우먼

0

elisp내가하고 싶은 일을하는 것이 더럽습니다 .

(defun tv/copy-buffer-to-file (filename)
  (interactive "sFile to write? ")
  (let ((bufname (buffer-name)))
    (set-visited-file-name filename)
    (save-buffer)
    (set-visited-file-name nil)
    (rename-buffer bufname)))

방문한 파일과 버퍼 이름을 모두 처리해야하기 때문에 필요한 것보다 훨씬 번거롭고 다른 것을 잊지 않았다는 것을 확신 할 수 없습니다.

새 버퍼에 버퍼 텍스트를 복사 한 다음 해당 버퍼를 저장하고 종료하는 것이 더 효과적 일 수 있지만 큰 버퍼의 성능 문제에 대해 걱정할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.