2016-01-15 2 views
1

Есть ли способ перепрограммировать порядок заголовков в org-mode Emacs? Я хотел бы изменить этот вид списка (, но гораздо больше, а не только два или три элемента, таким образом, "масса"):Bulk-reverse порядок заголовков в org-режиме Emacs?

* personal computer 
* Windows 
* Mac 
* Linux 
* StackExchange 
* stackoverflow 
* countries 
* people 

к этому:

* people 
* countries 
* StackExchange 
* stackoverflow 
* personal computer 
* Windows 
* Mac 
* Linux 

ответ

0

Sure, M-S-<up> и M-S-<down> перемещают субтитры вверх и вниз внутри их общего родителя. Есть и множество других подобных команд; перейдите на информационную страницу для их списка (M-x info "(org) Structure Editing").

Редактировать: Фактически, изменение порядка подзаголовков - это не то, что вы можете сделать из коробки, я думаю. Однако вы могли бы это сделать, позвонив sort-subr с умным выбором.

+0

Спасибо, но нет, как я уже писал в конце концов, фактический список я буду сортировать намного больше и имеет более чем 100 заголовков первого уровня. Я просто хочу изменить список таким образом, чтобы последний заголовок с его поддеревьями был первым заголовком нового списка, второй - вторым заголовком нового списка и т. Д. Было бы очень удобно их сортировать вручную. – stacko

+0

Ах, это было непонятно; из примера это выглядело так, будто вы просто хотели переместить подзаголовок, а «reverse» был просто плохим выбором слова. – db48x

+0

Извините, я не носитель языка, поэтому мой английский не очень хорош. Что было бы лучшим выбором слов в этой ситуации? Или это «порядок» странный, а не «обратный»? Как насчет «обратного сортировки»? – stacko

1

Выберите весь буфер и использовать M-x org-sort-entries RET F point RET

org-sort-entries сортирует все элементы на определенном уровне в дереве. «F» сообщает, что вы хотите сортировать в обратном порядке в соответствии с указанной вами функцией. Использование функции point дает каждой записи значение, соответствующее позиции буфера для сортировки.

Чтобы сделать то же самое с Elisp, вызов эквивалентен функция (org-sort-entries nil ?F 'point)

+0

Спасибо, это сработало! Я задал этот вопрос в emacs stackexchange, и я получил ответ с полной функцией, которая может выполнять эту операцию с одним вызовом и без дополнительных нажатий клавиш, таких как F и возвращает. Тем не менее, мне интересно, как я мог сделать это * в функции. Я собрал функцию, в которой я написал '(org-sort-entries" F "" point ")', но он дает ошибку, которая говорит 'Неверный аргумент типа: number-or-marker-p," point ".' Я даже изменил «точку» на «точку», но не работал. – stacko

+0

Лучший способ выяснить elisp - использовать функциональную документацию в справочной системе, 'C-h f org-sort-entries'. В этом случае он показывает, что первым параметром является WITH-CASE. Он устанавливается через префиксный аргумент, когда функция вызывается в интерактивном режиме, но должна быть явно задана при вызове из elisp. Я отредактировал ответ, чтобы показать его. – clatter