Сортування заголовків у файлі ORG


10

Я роблю нотатки у великому файлі org-mode, який має таку структуру:

* Toto, A
Notes about Toto.
* Titi, C
Notes about Titi.
* Tutu, A
Notes about Tutu.

Я хотів би сортувати файл так, щоб усі заголовки Aпередували заголовкам B, що, в свою чергу, передувало заголовкам Cтощо. Чи є автоматизований спосіб зробити це в org-режимі?


4
Ви пробували org-sort?
або-або

C-c ^з пам’яті (могло б щось подібне закінчуватись ^, як C-x C-c ^і т. д.)
wvxvw

Відповіді:


13

Існує org-sortкоманда, але вам може знадобитися налаштувати вашу файлову структуру, щоб отримати потрібні результати (якщо я правильно розумію питання).

Використовуйте org-sort( C-c ^) для сортування записів у контуру, рядків у таблиці чи елементів у списку. Наприклад, із заголовка можна зателефонувати, org-sortщоб сортувати всі дочірні записи.

У вашому прикладі ви хочете сортувати записи верхнього рівня у ваших контурах, тому виберіть спочатку всі записи. Коли ви телефонуєте, org-sortвам буде запропоновано сортувати: за алфавітом, за пріоритетом тощо.

З вашого прикладу я здогадуюсь, що очікуваний кінцевий результат:

* Toto, A
Notes about Toto.
* Tutu, A
Notes about Tutu.
* Titi, C
Notes about Titi.

Тобто, ви хочете сортувати за алфавітом, але чи маєте цей шрифт із перевагою? Для цього немає вбудованого сорту. Якщо ви змінили записи, щоб спочатку поставити цю літеру сортування (наприклад A, Toto), то нормальний алфавітний сорт буде працювати. Іншим варіантом було б переміщення цієї інформації до властивості на кожному елементі, тоді ви можете сортувати за властивостями.

Як @nanny запропонував у коментарях, org-sortможна також зателефонувати на спеціальну функцію сортування. Таким чином ви можете використовувати наявний файл, не змінюючи всіх записів. Ось функція сортування, яка знаходить поточний текст заголовка та додає останній символ до початку, щоб він мав перевагу. Вам знадобиться щось більш надійне, якщо ваші заголовки не будуть слідувати цій точній схемі.

(defun my-sort-last-letter ()
  (let ((text
         (plist-get
          (cadr (org-element-headline-parser (line-end-position)))
          :raw-value)))
    (concat (string (aref text (- (string-width text) 1))) text)))

1
Альтернативою зміні файлу є використання [f]uncтипу сортування org-sortта написання функції для сортування на основі існуючої структури.
няня

Це досить добре вирішило мою проблему, після швидкого пропуску query-replace-regexpдо редагування кількох заголовків, які не дотримувались правильного формату. Набагато простіше, ніж перетворення всіх моїх даних у властивості.
jch

... або ви можете перемістити його до тегу, тобто "* Toto: A:", потім сортуйте Cc ^ r TAGS
jtgd

1
Тільки щоб повідомити вам, що у мене ця проблема рівно один раз на рік, і я вчора знову використовував ваше рішення.
jch

0

Я розміщую заголовки з різними пріоритетами де-небудь у файлі, мене не турбує порядок. Пізніше я переглядаю їх, відсортованих із поглядами порядку денного . Використовуючи теги , відсортовані заголовки з конкретних категорій переглядаються із спеціальними поданнями порядку денного .

Я знаю, що це не відповідь на те, як сортувати заголовки у файлі , але перегляд заголовків із переглядами порядку денного - це завжди найкращий спосіб. Ви можете вставляти пріоритетні заголовки швидко, не турбуючись про замовлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.