Sắp xếp các tiêu đề trong tệp ORG


10

Tôi đang ghi chú trong một tệp chế độ org cực lớn có cấu trúc như sau:

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

Tôi muốn sắp xếp tệp sao cho tất cả các tiêu đề có Atrước các tiêu đề B, lần lượt trước các tiêu đề C, v.v. Có cách nào tự động để làm điều đó với chế độ org không?


4
Bạn đã thử org-sortchưa
abo-abo

C-c ^từ bộ nhớ (có thể là một cái gì đó tương tự kết thúc bằng ^, như C-x C-c ^v.v.)
wvxvw

Câu trả lời:


13

Có một org-sortlệnh nhưng bạn có thể cần phải điều chỉnh cấu trúc tệp của mình để có được kết quả bạn muốn (nếu tôi hiểu đúng câu hỏi).

Sử dụng org-sort( C-c ^) để sắp xếp các mục trong phác thảo, các hàng trong bảng hoặc các mục trong danh sách. Ví dụ từ một tiêu đề, bạn có thể gọi org-sortđể sắp xếp tất cả các mục con.

Trong ví dụ của bạn, bạn muốn sắp xếp các mục cấp cao nhất trong phác thảo của mình, vì vậy hãy chọn tất cả các mục nhập trước. Khi bạn gọi, org-sortbạn sẽ được nhắc cách sắp xếp: theo thứ tự abc, theo mức độ ưu tiên, v.v.

Tôi đoán từ ví dụ của bạn rằng kết quả cuối cùng mà bạn mong đợi là:

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

Đó là, bạn đang tìm cách sắp xếp theo thứ tự abc nhưng chữ cái đó có được ưu tiên không? Không có sắp xếp tích hợp cho điều đó. Nếu bạn thay đổi các mục để đặt chữ cái sắp xếp đó trước (ví dụ A, Toto) thì một kiểu chữ cái bình thường sẽ hoạt động. Một lựa chọn khác là di chuyển thông tin đó đến một thuộc tính trên mỗi mục, sau đó bạn có thể sắp xếp theo thuộc tính.

Như @nanny đã đề xuất trong các bình luận, org-sortcũng có thể gọi một hàm sắp xếp tùy chỉnh. Bằng cách đó bạn có thể sử dụng tệp hiện có của mình mà không phải thay đổi tất cả các mục. Đây là một hàm sắp xếp tìm văn bản tiêu đề hiện tại và nối thêm ký tự cuối vào đầu để nó được ưu tiên. Bạn sẽ cần một cái gì đó mạnh mẽ hơn nếu các tiêu đề của bạn không theo mô hình chính xác đó.

(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
Một cách khác để thay đổi tệp là sử dụng [f]uncloại sắp xếp org-sortvà viết một hàm để sắp xếp dựa trên cấu trúc hiện có.
mẫu

Điều đó đã giải quyết vấn đề của tôi khá tốt, sau khi nhanh chóng query-replace-regexpchỉnh sửa một vài tiêu đề không tuân thủ đúng định dạng. Dễ dàng hơn nhiều so với việc chuyển đổi tất cả dữ liệu của tôi sang thuộc tính.
JCH

... hoặc bạn có thể di chuyển nó sang thẻ, tức là "* Toto: A:" sau đó sắp xếp Cc ^ r TAGS
jtgd

1
Chỉ để cho bạn biết rằng tôi có vấn đề này chính xác mỗi năm một lần và tôi đã sử dụng lại giải pháp của bạn ngày hôm qua.
JCH

0

Tôi đang đặt tiêu đề với các ưu tiên khác nhau ở bất kỳ đâu trong một tệp, tôi không quan tâm đến thứ tự. Sau này tôi đang xem chúng được sắp xếp với các khung nhìn chương trình nghị sự . Bằng cách sử dụng thẻ , các tiêu đề được sắp xếp từ các danh mục cụ thể được xem với chế độ xem chương trình nghị sự tùy chỉnh .

Tôi biết đó không phải là câu trả lời cho cách sắp xếp các tiêu đề trong một tệp , nhưng xem các tiêu đề với chế độ xem chương trình nghị sự luôn là cách tốt nhất. Bạn có thể chèn các tiêu đề ưu tiên một cách nhanh chóng, mà không phải lo lắng về thứ tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.