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

Мой список выглядит так:

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

... как единый список, основанный на некотором совете, который я получил здесь .Я бы хотел переместить пункт 2 TODO из-под СЕГОДНЯ в пункт ЗАВТРА.

В руководстве написано :

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 за пределы заголовка «Сегодня» - я не могу переместить его вниз в поле ЗАВТРА, чтобы предшествовать элементу 3. Буфер сообщает мне:

cannot move past superior level or buffer limit org mode

Что такое нажатие клавиши, которое позволяет мне перемещать подэлементы «мимо высшего уровня» в новые заголовки?

Ответы [ 6 ]

16 голосов
/ 22 марта 2012

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

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

9 голосов
/ 22 марта 2012

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

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

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

2 голосов
/ 22 марта 2012

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

1 голос
/ 11 ноября 2013

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

<code>(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)
1 голос
/ 08 августа 2012

Как и в случае с sanityinc, решение, которое я выбрал, состоит в том, чтобы ...

  1. Переместить курсор на * ЗАВТРА
  2. Снять его с ** с помощью M-right
  3. Переместите курсор вверх к элементу TODO 2
  4. Потяните его вниз под ** ЗАВТРА с M-down
  5. Верните курсор к ** ЗАВТРА и повторно раскройте его с помощью M-left

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

0 голосов
/ 11 июля 2019

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

...