ORGファイルの見出しのソート


10

私は、次のような構造の大まかなorg-modeファイルでメモをとっています。

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

ファイルを並べ替えて、すべての見出しのA前に、次に見出しのB前に、というCようにします。org-modeで自動化する方法はありますか?


4
試しましたorg-sortか?
abo-abo 2015年

C-c ^メモリから(同様の末尾が^で終わる可能性があるC-x C-c ^など)
wvxvw

回答:


13

あるorg-sortコマンドがなく、(私が正しく質問を理解していた場合)あなたが望む結果を得るためにあなたのファイル構造を微調整する必要があるかもしれません。

org-sortC-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
年に1回だけこの問題が発生していることをお知らせします。昨日もこのソリューションを使用しました。
16

0

優先順位の異なる見出しをファイルのどこかに入れていますが、順序は関係ありません。後で、アジェンダビューで並べ替えて表示していますタグを使用することにより、具体的なカテゴリのソートされた見出しがカスタムの議題ビューで表示されます

それがファイルの見出しを並べ替える方法の答えではないことは知っていますが、議題ビューで見出しを表示することは常に最良の方法です。順序を気にすることなく、優先順位の高い見出しをすばやく挿入できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.