アウトラインツリーを新しい組織モードファイルに再ファイルしますか?


13

org-modeを使い始めたばかりで、org-modeの「inbox」ファイルに新しいタスクとメモを取り込むワークフローを想像してください。プロジェクトに成長するタスクの場合、それらを新しいorg-modeファイルにリファイリングして、それをアジェンダに追加することを想像します。

ORG-モードマニュアルは、主に、私はそれだけで同じファイル内のセクションを整頓できるように思われることを除いて、探している道をツリーを整頓について説明します。私がやりたいのは、そのツリーを取得し、それを新しいファイルにリファイリングすることです(そして、できればアジェンダリストにファイルを追加してください)。

新しいバッファーにコピーして貼り付けてから、新しいバッファーをアジェンダに追加できますが、これは組織モードの神がショートカットを持っているようなもののようです。


プロジェクトごとに新しいファイルを作成したいのはなぜですか?小さなプロジェクトと大きなプロジェクトがあります。したがって、projects.orgファイルは、最初はすべてのプロジェクトを含む一種のインキュベーションファイルとして使用できます。
トム

ありがとう、トム。それが私の考えです。大きくなりすぎると、大きなものが独自のファイルに移動します。議題リストの別のファイルにリファイリングできるフラグを見つけましたが、既存の見出しの下のみです。新しい空の組織ファイルに単純にツリーを追加できるかどうかを確認するために、もう少し掘り下げてみるつもりです...
Peter

1
@Peterは、ツリーを別のファイルにリファイリングできます。しかし、最初に宛先ファイルを追加する必要がありますorg-agenda-files
kindahero

@kindahero:それはデフォルトのオプションですか?保存され、Cc [で議題に追加された空のファイル「test2.org」に移動したいツリーを持つファイル「test1.org」があります。補完オプションとして提供されるリファイルターゲットは、「test1.org」からのみです。
ピーター

回答:


1

これは、必要に応じて変更できる高速で不潔なelisp関数です。

(defun subtree-to-new-file()
  (インタラクティブ)
  「組織のサブツリーを新しいファイルに移動するのを手際よく支援する」
  (org-copy-subtree nil t)
;;; この長いsetqステートメントは、最初の見出しのタイトルを取得して、新しい.orgファイルのデフォルトのファイル名として使用します。
(setq最初の見出し
  (with-temp-buffer
    (ヤンク)
    (バッファの始まり)
    (search-forward "" nil nil 1)
    (setq title-start(ポイント))
    (視線の終わり)
    (setq title-end(ポイント))
    (setq first-heading(buffer-substring title-start title-end))
  ))
(setq def-filename(concat first-heading ".org"))
(let((insert-default-directory t))
  (find-file-other-window  
    (read-file-name "サブツリーをファイルに移動:" 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)


まあ、私は本当にここから別の方向に進みましたが、これはトリックです。私はずっと前にこれを尋ねましたが、答えを見るのは素晴らしいことです。これを投稿してくれてありがとう-それは魅力のように動作します。ここで達成したいと思っていたことを思い出して、これを使い始めるかもしれません。
ピーター

5

他の組織モードバッファをリファイルリストに追加するには、次のような行を.emacsファイルに追加する必要があります。私はブレント・ハンセンの設定からこれを取った(参照ここ

; 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
これにより、新しいファイルの既存のツリーにツリーを追加できますが、既存のコンテンツのない空の新しく追加されたファイルには追加できません。私はこれが私が得ると同じくらい近いかもしれないと思います。
ピーター

(setq org-refile-allow-creating-parent-nodes (quote confirm))Berntの同じコードブロックで参照されているように追加することもできます(上記のリンクを参照)。サブヘッダーとしてだけでなく、親ノードとして追加することができます。残念ながら外出先で新しいファイルを追加できるかどうかはわかりません。
ジョナサンリーチペピン

1
その行を使用しても、アジェンダ内のファイルはリファイルターゲットとして表示されません。既存のヘッダーにのみリファイリングできるようです。
ピーター

1
どう(setq org-refile-use-outline-path 'file)ですか?これにより、ファイルがターゲットになる場合があります。
ブレイディトレーナー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.