개요 트리를 새로운 조직 모드 파일로 다시 정리 하시겠습니까?


13

방금 org-mode를 시작하고 org-mode "inbox"파일에서 새 작업과 메모를 캡처하는 워크 플로를 상상합니다. 프로젝트로 성장하는 작업의 경우 새로운 org-mode 파일로 파일을 다시 정리하여 내 의제에 추가한다고 상상할 수 있습니다.

조직 모드 매뉴얼은 단지 동일한 파일 내에서 섹션을 refiling 수 있도록 보인다 제외하고, 나무를 내가 찾는 대부분의 방법을 refiling에 대해 설명합니다. 내가하고 싶은 것은 그 트리를 가져 와서 새 파일로 파일을 다시 제출하는 것입니다 (그리고 바람직하게는 의제 목록에 파일을 추가하십시오).

새 버퍼에 복사하여 붙여 넣은 다음 새로운 버퍼를 의제에 추가 할 수는 있지만 이것은 org 모드 신이 지름길을 갖는 것 같습니다.


모든 프로젝트에 대해 새 파일을 만들고 싶은 이유는 무엇입니까? 작은 프로젝트와 큰 프로젝트가 있으므로, 모든 프로젝트를 초기에 포함하는 일종의 인큐베이션 파일로 projects.org 파일을 가질 수 있으며 프로젝트가 너무 커져서 자체 파일을 보유 할 가치가있는 경우 수동으로 만들 수 있습니다.
Tom

고마워, 톰 그건 내 생각이야 큰 파일은 너무 커지면 자신의 파일로 이동합니다. 내 의제 목록의 다른 파일로 파일을 다시 제출할 수 있지만 기존 제목 아래에서만 파일을 다시 보낼 수있는 플래그를 찾았습니다. 새 빈 조직 파일에 단순히 나무를 추가 할 수 있는지 알아보기 위해 조금 더 파고들 것입니다.
Peter

1
@Peter 모든 트리를 다른 파일로 다시 파일링 할 수 있습니다. 하지만 먼저 대상 파일을 추가해야합니다.org-agenda-files
kindahero

@ Kindahero : 이것이 기본 옵션입니까? Cc [. 완료 옵션으로 제공하는 유일한 파일 철회 대상은 "test1.org"입니다.
Peter

답변:


1

다음은 원하는대로 수정할 수있는 빠르고 명확한 elisp 함수입니다.

(defun 하위 트리에서 새 파일로)
  (인터렉티브)
  "조직 하위 트리를 새 파일로 이동하는 데 도움이됩니다"
  (org-copy-subtree nil t)
;;; 이 긴 setq 문은 첫 번째 제목의 제목을 가져 와서 새 .org 파일의 기본 파일 이름으로 사용합니다.
(setq 첫 번째 제목
  (임시 버퍼 포함)
    (양키)
    (버퍼 시작)
    (탐색 ""nil nil 1)
    (setq 타이틀 시작 (포인트))
    (시각 끝)
    (setq 제목 끝 (포인트))
    (setq 첫 번째 제목 (버퍼 하위 문자열 제목 시작 제목 끝))
  ))
(setq def-filename (concat 첫 번째 제목 ".org"))
(((삽입-디폴트 디렉토리 t))
  (파일-다른 창 찾기  
    (읽기 파일 이름 "하위 트리를 파일로 이동 :"def-filename)
  ))
(org-paste-subtree)
;;; 이 마지막 명령은 새로운 .org 파일을 의제에 추가합니다.
(org-agenda-file-to-front)
)

*scratch*버퍼 에 붙여넣고 Ctrl+ 를 누르면이 코드에 빠른 시도를 할 수 있습니다 j. 그런 다음 조직 모드 파일의 하위 트리로 이동하여 Alt+ x를 누르십시오 M-x subtree-to-new-file.

emacs를 사용할 때마다 제자리에 있고 elisp에 익숙하지 않은 경우, 가장 쉬운 방법은이 코드를 .emacs구성 파일에 붙여 넣어 저장하는 것입니다. 함수 전후에 행을 추가하여 키 바인딩을 제공 할 수도 있습니다. 가장 쉬운 방법은 (아마도 최선은 아님) 다음과 같습니다 (global-set-key "\C-xw" 'subtree-to-new-file)..


글쎄, 나는 여기에서 다른 방향으로 나아 갔지만, 이것은 속임수입니다. 나는 오래 전에 이것을 물었고, 대답을 보는 것이 좋습니다. 게시 해 주셔서 감사합니다. 매력처럼 작동합니다. 어쩌면 나는 내가 여기서 성취하려고했던 것을 기억하고 이것을 사용하기 시작할 것입니다.
Peter

5

다른 org-mode 버퍼를 refile 목록에 추가하려면 .emacs 파일에 다음과 같은 행을 추가해야합니다. 나는 이것을 Brent Hansen의 구성에서 가져 왔습니다 ( 여기 참조 ).

; Targets include this file and any file contributing to the agenda - up to 9 levels deep
(setq org-refile-targets (quote ((nil :maxlevel . 9)
                                 (org-agenda-files :maxlevel . 9))))

(org-agenda-files :maxlevel .9)실제로 필요한 것만 , 다른 부분은 파일 레벨을 최대로 설정합니다.


1
이를 통해 새 파일의 기존 트리에는 트리를 추가 할 수 있지만 기존 내용이없는 새로 추가 된 빈 파일에는 트리를 추가 할 수 없습니다. 나는 이것이 내가 얻는 것과 비슷하다고 생각합니다.
Peter

(setq org-refile-allow-creating-parent-nodes (quote confirm))Bernt의 동일한 코드 블록에서 참조 된대로 추가 할 수도 있습니다 (위 링크 참조). 하위 제목이 아닌 상위 노드로 추가 할 수 있습니다. 불행히도 이동 중에 새 파일을 추가 할 수 있는지 확실하지 않습니다.
Jonathan Leech-Pepin

1
이 행을 사용하더라도 의제에있는 파일은 파일을 다시 대상으로 표시하지 않습니다. 기존 헤더로만 파일을 다시 제출할 수있는 것 같습니다.
피터

1
어떤 약 (setq org-refile-use-outline-path 'file)? 이것은 파일을 대상으로 만들 수 있습니다.
Brady Trainor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.