Как переместить подзаголовки под другие заголовки в org-mode emacs

Мой список выглядит следующим образом:

* TODAY
** TODO Item 1
** TODO Item 2
* TOMORROW
** TODO Item 3
** TODO Item 4 

... как единый список, основанный на некоторых рекомендациях я полученных здесь. Я хотел бы переместить TODO Item 2 из под СЕГОДНЯ под TOMORROW.

Руководство говорит:

M-up
M-down
Move the item including subitems up/down (swap with previous/next item of same indentation). If the list is ordered, renumbering is automatic. 

Но пока я могу изменить места пунктов 1 и 2, я не могу переместить элемент 2 за пределами заголовка "Сегодня". Я не могу переместить его вниз под TOMORROW, чтобы предшествовать пункту 3. Буфер говорит мне:

cannot move past superior level or buffer limit org mode

Какое нажатие клавиши позволяет мне переместить подпункты "прошлый превосходный уровень" под новыми заголовками?

Ответ 1

Подобно здравому смыслу выше, решение, которое я принял, состоит в том, чтобы...

  • Переместить курсор на * TOMORROW
  • Разделите его на ** с помощью M-right
  • Переместить курсор до пункта 2 TODO
  • Потяните вниз вниз ** ЗАВТРА с M-down
  • Верните курсор на ** TOMORROW и повторно продвигайте его с помощью M-left

Построение макроса для этого, вероятно, будет лучше, но оно интуитивно и не так плохо, как кажется. Тем не менее, было бы удобнее, если бы C-M-down или что-то в этом роде.

Ответ 2

Вы можете использовать C-c C-w (org-refile) и указать заголовок, в который вы хотите отправить свой элемент TODO.

Как вы увидите в этой документации по функциям (C-h f org-refile), вы можете настроить переменные org-refile-targets и org-reverse-note-order, чтобы определить список возможных целевых заголовков и позицию перемещенного элемента в пределах целевой заголовок.

Ответ 3

Вот два варианта:

  • Продвиньте элемент 2 на верхний уровень с помощью M-left, затем переместите его ниже "ЗАВТРА" с помощью M-down и, наконец, понизите его под "ЗАВТРА" с помощью M-right.

  • Вырежьте поддерево "Item 2" с помощью org-cut-special (C-c C-x C-w), затем вставьте его под "ЗАВТРА" с помощью org-paste-special (C-c C-x C-y).

Ответ 4

Мне нужно сделать это очень много, когда делаете презентации с лучом. Самый простой способ для меня - просто сфотографировать тогда элемент, как у вас в списке примеров, и по сути убить и вырвать регион. То есть, перейдите в начало строки ** TODO Item 2, установите метку (C-[SPACE]), переместите точку в начало следующей строки (C-n), убейте область (C-w), переместите укажите, где вы хотите, под заголовком * Tomorrow, и верните его назад (C-y). Важно получить область, а не только линию (с C-k), чтобы вы получили все свернутые биты.

Ответ 5

Бит опоздал на вечеринку, но для расширения ответов Mittenchops я создал следующий макрос.

(defun org-move-subtree-to-next-superior()
  "Moving subtree to next superior."
  (interactive) 
  (org-promote-subtree)
  (org-move-subtree-down)
  (org-demote-subtree))
(global-set-key (kbd "C-c C-x t") 'org-move-subtree-to-next-superior)

Ответ 6

Самый простой способ, просто используйте M-shift-up или M-shift-down, чтобы переместить предмет за уровень выше.