현재 파일을 약간 다른 이름으로 저장


17

내 파일은 긴 파일 이름을 가지며 파일 이름의 일부는 날짜와 버전 번호입니다. 종종 거의 같은 이름을 사용하여 버퍼에 파일을 저장하고 싶습니다 . 버전 번호 또는 날짜 만 변경하십시오.

현재 버퍼의 파일 이름을 킬 링에 넣는 명령이 있으면 파일을 열고 C-x C-w(파일 쓰기) 를 입력 하고, 현재 이름을 Cy로 변경하여 저장하고 저장 하는 명령이 있으면 훨씬 쉽습니다. 그것.

Windows에서는 Emacs 24.3을, Linux에서는 24.4를 사용하고 있습니다. 다양한 이유로 파일 이름을 사용하고 git을 사용하지 않아야합니다. 이 명령이 AUCTeX / LaTeX와 함께 주요 모드로 작동했다면 기쁠 것입니다.


편집 1 :

실수했습니다 : C-x C-f(= 파일 찾기) 를 입력하고 싶지 않지만 C-x C-w(= 파일 쓰기). 나는 이것을 위에서 고쳤다.

편집 2 :

중복 질문과 답변을 찾았습니다 : /unix//a/45381 그러나 더 좋은 답변은 없습니다!

편집 3 :

여기서는 http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Components.html는 filname의 "비 디렉토리"부분을 선택하는 함수이다 :

기능 : file-name-nondirectory filename

This function returns the nondirectory part of filename.

          (file-name-nondirectory "lewis/foo")
               ⇒ "foo"
          (file-name-nondirectory "foo")
               ⇒ "foo"
          (file-name-nondirectory "lewis/")
               ⇒ ""

내가 lisp 만 알고 있다면 ...


오, 안녕하세요. Keks :) 나는 이것을 여러 번 궁금하게 생각했습니다 ... 좋은 질문입니다. 그리고 리스프은 쉽게 ...
숀 알 레드

방금이 질문을 찾았습니다 ... 호기심에서 : "다양한 이유"고문 / 공저 관련 ...?
mbork

1
@mbork 저는 변호사이며 계약서뿐만 아니라 편지도 씁니다. 누군가에게 최근 편지를 열어서 이름을 바꾸고 내용을 지우고 같은 사람에게 새 편지를 쓰는 것이 처음부터 시작하는 것보다 빠릅니다. 그러나 계약의 이름을 바꾸는 것은 cvs를 대체 할 수있는 나쁜 대안이지만 LaTeX와 Git을 사용하는 다른 변호사를 만난 적이 없으므로 새로운 버전의 계약서에 새로운 파일 이름을 부여해야합니다 ...
Keks Dose

그럴 수 있지. YASnippet은 어떻습니까? 사용 사례에 매우 적합합니다.
mbork

@mbork 예, 몇 년 동안 템플릿에 YASnippets를 사용하고 있습니다. LaTeX, Emacs, orgmode, YASnippets는 Word와 Outlook보다 PC를 훨씬 더 안정적으로 만듭니다. 좋아, 나는 이것을 Linux 컴퓨터에서 작성하고 있지만, 일반적인 IT 헬프 데스크에서 기대할 수없는 것입니다 : Windows 대신 Linux를 지원하는 것.
Keks 복용량

답변:


23

모든 것을 할 필요는 없습니다.

간단히:

  1. 여전히 원본 파일에서을 누르십시오 C-x C-w. 새 파일 이름을 묻는 메시지가 나타납니다.
  2. M-n누르면 현재 파일 이름이 삽입됩니다.
  3. 원하는 것을 편집 RET하고 파일을이 새로운 이름으로 저장하기 위해 누르십시오 .

여전히 원본 파일이 있습니다. 다시 돌아가려면로 다시 방문하십시오 C-x C-f.


파일 / 저장에 대한 Emacs 매뉴얼을 보았지만이 트릭을 찾지 못했습니다. 너 어떻게 찾아 냈니? 큰!
Keks 복용량

4
확실하지 않다. 미니 버퍼 프롬프트에 대한 일반적인 것입니다. Mp를 치는 것은 역사를 겪고, Mn을 치는 것은 "현재"옵션을 제공합니다.
Malabarba

5
을 사용하는 경우 먼저 ido수행 C-f한 다음 수행하십시오 M-n.
Kaushal Modi

1
와우, 나는 이것을 몰랐다. 감사! ( "감사합니다, 저도 감사합니다"라는 의견에 대해 죄송하지만, 이것은 간단하지만 유용한 것을 배우는 좋은 예입니다. Viva la emacs.stackexchange!
Mark Aufflick

3

현재 버퍼에서 파일 이름 복사

다음은 Cameron Desautels 블로그 에서 현재 버퍼 파일 이름을 복사하여 미니 버퍼로 표시 하는 함수 입니다.

 
;; 출처 : http://camdez.com/blog/2013/11/14/emacs-show-buffer-file-name/
(defun show-copy-buffer-file-name ()
  "미니 버퍼에 현재 파일의 전체 경로를 표시하고 킬 링으로 복사하십시오."
  (인터렉티브)
  ((((파일 이름 (버퍼 파일 이름))))
    (파일 이름 인 경우
        (프론
          (메시지 파일 이름)
          (kill-new 파일 이름))
      (오류 "버퍼가 파일을 방문하지 않았습니다"))))

현재 버퍼에서 파일 이름 바꾸기

Magnar Sveen 은 현재 버퍼의 이름 을 한 번에 편리하게 바꾸는 블로그 중 하나 에서 아래 기능을 구현했습니다 . 이것은 귀하가 요청한 것이 아니지만 사용 사례와 관련이 있다고 생각했습니다.

;; 출처 : http://www.whattheemacsd.com/
(defun 이름 바꾸기 현재 버퍼 파일 ()
  "현재 버퍼와 방문중인 파일의 이름을 바꿉니다."
  (인터렉티브)
  ((((이름 (버퍼 이름)))
        (파일 이름 (버퍼 파일 이름)))
    (((파일 이름 (file-exists-p filename)이 아닌 경우))
        (오류 "버퍼 '% s'이 (가) 파일을 방문하지 않습니다!"이름)
      (((새 이름 (읽기 파일 이름 "새 이름 :"파일 이름)))
        (만약 (get-buffer new-name)
            (오류 "이름이 '% s'인 버퍼가 이미 있습니다!"new-name)
          (이름 바꾸기 파일 이름 new-name 1)
          (버퍼 이름 변경)
          (방문 파일 이름 new-name)
          (세트 버퍼 수정 된 p nil)
          ( "파일 '% s'의 이름이 '% s'(으)로 변경되었습니다."
                   이름 (파일 이름이 아닌 디렉토리 new-name))))))))

Magnar Sveen의 솔루션 은 원본 파일을 삭제 하고 나중에 이름이 바뀐 파일 만 있습니다. 이것은 유용하지만 이전 파일과 이름이 바뀐 파일을 유지해야합니다. Cameron Desautel의 기능은 파일 이름을 전체 경로와 함께 복사합니다. 이것은 내가 필요한 솔루션에 매우 가깝습니다. 이 기능을 변경하는 방법을 알고 있으므로 경로없이 파일 이름 만 흘리십시오. 그러나 대단히 감사합니다.
Keks 복용량

1
@KeksDose 는 첫 번째 함수에서로 변경 (buffer-file-name)하여 (file-name-nondirectory (buffer-file-name))파일 이름 sans 디렉토리를 얻습니다.
nispio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.