emacs 24.1以降を使用している場合は、試すことができます
(setq org-refile-active-region-within-subtree t)
これはほとんどあなたが望むことをしますが、テキストを強調表示した行(emacs用語は「アクティブ領域」です)を見出しに変えます。
強調表示したテキストを別の見出しに移動したい場合は、org-mode を拡張する必要があります。幸いなことに、組織は必要なツールを提供します。次に例を示します。
(defvar org-refile-region-format "\n%s\n")
(defvar org-refile-region-position 'top
"Where to refile a region. Use 'bottom to refile at the
end of the subtree. ")
(defun org-refile-region (beg end copy)
"Refile the active region.
If no region is active, refile the current paragraph.
With prefix arg C-u, copy region instad of killing it."
(interactive "r\nP")
;; mark paragraph if no region is set
(unless (use-region-p)
(setq beg (save-excursion
(backward-paragraph)
(skip-chars-forward "\n\t ")
(point))
end (save-excursion
(forward-paragraph)
(skip-chars-backward "\n\t ")
(point))))
(let* ((target (save-excursion (org-refile-get-location)))
(file (nth 1 target))
(pos (nth 3 target))
(text (buffer-substring-no-properties beg end)))
(unless copy (kill-region beg end))
(deactivate-mark)
(with-current-buffer (find-file-noselect file)
(save-excursion
(goto-char pos)
(if (eql org-refile-region-position 'bottom)
(org-end-of-subtree)
(org-end-of-meta-data-and-drawers))
(insert (format org-refile-region-format text))))))
org-refile-get-location
組織のリファイリング メカニズムを適用し、ファイルと場所を抽出するために使用します。次に、その場所に移動して、コピーしたテキストを挿入します。便宜上、2 つの変数が追加されました。
org-refile-targets
考慮するファイルを制御できます。たとえば、次のようになります。
nil ;; only the current file
'((org-agenda-files :maxlevel . 2)) ;; all agenda files, 1st/2nd level
'((org-files-list :maxlevel . 4)) ;; all agenda and all open files
'((my-org-files-list :maxlevel . 4)) ;; all files returned by `my-org-files-list'
現在開いている組織バッファーへのリファイリングを制限するには、関数を定義します。
(defun my-org-files-list ()
(mapcar (lambda (buffer)
(buffer-file-name buffer))
(org-buffer-list 'files t)))
そして、どちらか
(setq org-refile-targets '((my-org-files-list :maxlevel . 4)))
または使用
M-x customize-option <ret> org-refile-targets
「値メニュー」から「関数」を選択し、入力しますmy-org-files-list