การเรียงลำดับส่วนหัวในไฟล์ ORG


10

ฉันกำลังจดบันทึกในไฟล์โหมดองค์กรขนาดใหญ่ที่มีโครงสร้างต่อไปนี้:

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

ฉันต้องการจัดเรียงไฟล์เพื่อให้ส่วนหัวทั้งหมดมีส่วนหัวที่มีAมาก่อนBซึ่งจะนำหน้าส่วนหัวด้วยCเป็นต้น มีวิธีอัตโนมัติในการทำเช่นนี้กับโหมด org หรือไม่?


4
คุณลองorg-sortไหม
abo-abo

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

ฉันใส่พาดหัวที่มีลำดับความสำคัญต่างกันในไฟล์ฉันไม่สนใจเกี่ยวกับการสั่งซื้อ ต่อมาผมดูพวกเขาเรียงกับมุมมองวาระการประชุม โดยการใช้แท็กหัวเรียงลำดับจากประเภทคอนกรีตกำลังมองด้วยมุมมองวาระการประชุมที่กำหนดเอง

ฉันรู้ว่านั่นไม่ใช่คำตอบสำหรับวิธีการเรียงลำดับหัวข้อในไฟล์แต่การดูหัวข้อข่าวที่มีมุมมองวาระเป็นวิธีที่ดีที่สุดเสมอ คุณสามารถแทรกหัวข้อข่าวสำคัญได้อย่างรวดเร็วโดยไม่ต้องกังวลเกี่ยวกับการสั่งซื้อ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.