ORG dosyasındaki başlıkları sıralama


10

Aşağıdaki yapıya sahip büyük bir org-mode dosyasında notlar alıyorum:

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

Ben dosyayı sıralamak istiyorum böylece tüm başlıkları Aprecede ile başlıkları Bsırayla ile başlıkları önüne, Cvb. Bunu kuruluş modu ile yapmanın otomatik bir yolu var mı?


4
Denedin org-sortmi
abo-abo

C-c ^hafızadan (benzer bir şey ile biten olabilir ^gibi C-x C-c ^vs.)
wvxvw

Yanıtlar:


13

Bir org-sortkomut var, ancak istediğiniz sonucu almak için dosya yapınızı ayarlamanız gerekebilir (soruyu doğru anlıyorsam).

Anahattaki girişleri, tablodaki satırları veya listedeki öğeleri sıralamak için org-sort( C-c ^) kullanın . Örneğin, bir başlıktan org-sorttüm alt girdileri sıralamak için arayabilirsiniz .

Örneğinizde, ana hattınızdaki en üst düzey girişleri sıralamak istiyorsunuz, bu yüzden önce tüm girişleri seçin. Aradığınızda org-sort, nasıl sıralanacağınız sorulur: alfabetik olarak, önceliğe göre, vb.

Örneğinizden beklediğiniz son sonucun:

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

Yani, alfabetik olarak sıralamak istiyorsunuz, ancak bu mektubun önceliği var mı? Bunun için yerleşik bir tür yoktur. Bu sıralama harfini ilk A, Totosıraya koymak için girişleri değiştirdiyseniz (örn. ) Normal bir alfabetik sıralama işe yarayacaktır. Başka bir seçenek, bu bilgileri her öğedeki bir özelliğe taşımaktır, daha sonra özelliğe göre sıralayabilirsiniz.

@Nanny'nin yorumlarda belirttiği gibi, org-sortözel bir sıralama işlevi de çağırabilir. Bu şekilde, tüm dosyalarınızı değiştirmek zorunda kalmadan mevcut dosyanızı kullanabilirsiniz. Geçerli başlık metnini bulan ve en son karakteri başlangıca ekleyen bir öncelik işlevi. Başlıklarınızın hepsi tam olarak bu şekle uymuyorsa daha sağlam bir şeye ihtiyacınız olacak.

(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
Dosyayı değiştirmenin bir alternatifi, [f]uncsıralama türünü kullanmak org-sortve mevcut yapıya göre sıralamak için bir işlev yazmaktır.
dadı

Bu query-replace-regexp, doğru formatı kesinlikle takip etmeyen birkaç başlığı düzenlemek için hızlı bir geçişten sonra sorunumu oldukça güzel bir şekilde çözdü . Tüm verilerimi mülklere dönüştürmekten çok daha kolay.
JCH

... ya da bir etikete taşıyabilirsiniz, yani "* Toto: A:" sonra Cc ^ r TAGS
jtgd

1
Sadece bu problemi tam olarak yılda bir kez yaşadığımı bildirmek için ve dün çözümünüzü tekrar kullandım.
JCH

0

Dosyada herhangi bir yerde farklı önceliklere sahip başlıklar koyuyorum, siparişle ilgilenmiyorum. Daha sonra bunları gündem görünümleriyle sıralanmış olarak görüntülüyorum . Etiketler kullanılarak , somut kategorilerdeki sıralı başlıklar özel gündem görünümleriyle görüntülenir .

Bir dosyadaki başlıkların nasıl sıralanacağının cevabı olmadığını biliyorum , ancak başlıkların gündem görünümleriyle görüntülenmesi her zaman en iyi yoldur. Sipariş konusunda endişelenmeden, öncelikli başlıkları hızlı bir şekilde ekleyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.