Giao diện tìm kiếm cho các tập tin chế độ org


7

Tôi sử dụng chế độ org để ghi chú. Hiện tại tôi có một thư mục gốc, ví dụ: "Ghi chú" và có một số thư mục con bên trong nó, ví dụ: "Linux", "Lập trình", v.v. Các ghi chú được sử dụng chế độ org được lưu trữ dưới các thư mục con đó.

Tôi đã tự hỏi liệu có một bộ cài đặt có sẵn để tôi có thể tìm kiếm các ghi chú này (tất cả đều là các tệp chế độ org) rất nhanh không. Tôi biết có khéo léo , nhưng nó không được thiết kế cho các tập tin chế độ org. Trên thực tế tôi cũng đã thử helm-đạn nhưng nó không đạt yêu cầu.

Nói chính xác hơn, điều tôi muốn đạt được là tôi có thể tìm kiếm các tệp này bằng cách sử dụng thẻ, tiêu đề hoặc các tính năng khác có liên quan đến chế độ org, có thể sử dụng một số cú pháp được xác định trước. Và nếu có thể, tôi sẽ thích một cái gì đó như helm. Nếu không có một phần mở rộng như vậy, nó có đáng để thực hiện một phần mở rộng như vậy không? Tôi nghĩ deft + helm-đạn có thể là một điểm khởi đầu tốt.

CẬP NHẬT: Tôi đã thử cả hai phương thức, biến thư mục-cục bộ (như @itsjeyd gợi ý trong câu trả lời) và lệnh org-agenda-custom-custom và tôi thấy cái sau có vẻ thuận tiện hơn. Vì vậy, đây là cài đặt của tôi:

(setq org-agenda-custom-commands
  '(("n" . "Search in notes")
    ("nt" "Note tags search" tags ""
     ((org-agenda-files (file-expand-wildcards "path/to/Notes/*/*.org")))) 
    ("ns" "Note full text search" search ""
     ((org-agenda-files (file-expand-wildcards "path/to/Notes/*/*.org"))))))

Bạn đã thử chưa?: M-x org-search-viewĐây là liên kết đến tài liệu: orgmode.org/manual/Search-view.html
luật

Afaik bạn có thể thiết lập Deft để sử dụng các tệp org theo mặc định với (setq deft-extension "org")(setq deft-text-mode 'org-mode).
mutbuerger 14/03/2015

@ mutbuerger Các cài đặt là những gì tôi hiện đang sử dụng. Nhưng bản thân Deft không có chức năng tìm kiếm liên quan đến tổ chức org
cutejumper 14/03/2015

Câu trả lời:


7

Bản thân Org cung cấp một phương tiện để lọc / tìm kiếm thông tin được lưu trữ trong .orgcác tệp theo nhiều cách khác nhau. Nó được gọi là "Chương trình nghị sự" . Các org-modenhãn hiệu cung cấp thông tin đầy đủ về cách sử dụng nó (đánh dấu vào liên kết ở trên hoặc làm C-h i m Org Mode RETtừ bên trong Emacs và điều hướng đến "Chương trình nghị sự lần xem" chương), vì vậy nó không có ý nghĩa để lặp lại tất cả các thông tin này ở đây. Văn bản giới thiệu từ sách hướng dẫn tóm tắt những gì bạn có thể làm với nó (nhấn mạnh của tôi):

Org có thể chọn các mục dựa trên các tiêu chí khác nhau và hiển thị chúng trong một bộ đệm riêng. Bảy loại chế độ xem khác nhau được cung cấp:

  • một chương trình nghị sự giống như một lịch và hiển thị thông tin cho những ngày cụ thể,
  • danh sách TODO bao gồm tất cả các mục hành động chưa hoàn thành,
  • chế độ xem khớp, hiển thị các tiêu đề dựa trên các thẻ, thuộc tính và trạng thái TODO được liên kết với chúng,
  • chế độ xem dòng thời gian hiển thị tất cả các sự kiện trong một tệp Org, trong chế độ xem được sắp xếp theo thời gian,
  • chế độ xem tìm kiếm văn bản hiển thị tất cả các mục từ nhiều tệp có chứa các từ khóa được chỉ định ,
  • chế độ xem dự án bị kẹt hiển thị các dự án hiện không di chuyển và
  • chế độ xem tùy chỉnh là các tìm kiếm đặc biệt và kết hợp các chế độ xem khác nhau.

Điều duy nhất bạn cần làm để bắt đầu sử dụng chương trình nghị sự để tìm kiếm ghi chú của mình là thêm bất kỳ tệp nào bạn muốn tìm kiếm org-agenda-files:

Thông tin được hiển thị thường được thu thập từ tất cả các tệp chương trình nghị sự, các tệp được liệt kê trong biến org-agenda-files. Nếu một thư mục là một phần của danh sách này, tất cả các tệp có phần mở rộng .orgtrong thư mục này sẽ là một phần của danh sách.

Vì vậy, trong trường hợp của bạn, bạn sẽ muốn thêm một cái gì đó như thế này vào tệp init của mình:

(setq org-agenda-files '("/path/to/Notes/Linux" "/path/to/Notes/Programming"))

Để biết nhiều ví dụ và lời khuyên thực tế, tôi cũng khuyên bạn nên xem bài viết về Tìm kiếm nâng cao trên Worg .

[CẬP NHẬT] Giới hạn tìm kiếm trong các tập tin cụ thể

Như đã đề cập trong các bình luận, OP muốn có thể hạn chế tìm kiếm trong các tập tin cụ thể. Theo thuật ngữ kỹ thuật, điều này có nghĩa là thiết lập org-agenda-filescác giá trị khác nhau tùy thuộc vào ngữ cảnh. Điều này có thể đạt được bằng cách sử dụng các biến thư mục-cục bộ :

Cách thông thường để xác định các biến thư mục-cục bộ là đặt một tệp có tên .dir-locals.eltrong một thư mục. Bất cứ khi nào Emacs truy cập bất kỳ tệp nào trong thư mục đó hoặc bất kỳ thư mục con nào của nó, nó sẽ áp dụng các biến thư mục-cục bộ được chỉ định trong .dir-locals.el, [...].

Ví dụ: hãy nói rằng

  • trong khi truy cập các tệp được lưu trữ trong Notes/Linuxbạn muốn sử dụng chương trình nghị sự để chỉ tìm kiếm .orgcác tệp được lưu trữ trong Notes/Linux.

  • trong khi truy cập các tệp được lưu trữ trong Notes/Programming, bạn muốn sử dụng chương trình nghị sự để chỉ tìm kiếm .orgcác tệp được lưu trữ trong Notes/Programming.

Dưới đây là những gì cần làm để kích hoạt hành vi này:

  1. Thêm một .dir-locals.eltệp có nội dung sau vào cả hai Notes/LinuxNotes/Programming:

    ((nil . ((org-agenda-files . (".")))))

    Cái này đặt danh sách org-agenda-filesđể bao gồm tất cả các tệp trong thư mục hiện tại.

  2. Thêm mã sau vào tệp init của bạn:

    (add-hook 'org-agenda-mode-hook #'hack-dir-local-variables-non-file-buffer)

    Bước này là cần thiết để đảm bảo rằng *Org Agenda*( bộ đệm không phải tệp ) tôn trọng các cài đặt thư mục cục bộ của bạn org-agenda-files.

Lần tới khi bạn truy cập một tệp được lưu trữ trong Notes/Linuxhoặc Notes/Programming, Emacs sẽ hỏi bạn xem bạn có muốn áp dụng các cài đặt được lưu trữ trong đó không .dir-locals.el. Nhấn !để yêu cầu Emacs áp dụng các cài đặt đánh dấu chúng là an toàn cho các phiên trong tương lai (bạn sẽ không được nhắc lại cho các tệp trong cùng thư mục).


Có thể tôi đã không nêu rõ trong câu hỏi ... Tôi đã sử dụng chương trình nghị sự, nhưng vấn đề là tôi có các tệp org khác hiển thị lịch trình và TODO cho chương trình nghị sự của mình và tôi không muốn ghi chú của mình làm xáo trộn chương trình nghị sự lượt xem. Có lẽ những gì tôi muốn là một cái gì đó giống như chức năng tìm kiếm trong Evernote vì tôi muốn sử dụng Emacs làm ứng dụng ghi chú của mình. Bạn có biết Deft không? Nó có giao diện tìm kiếm tốt nhưng không liên quan đến org
cutejumper 14/03/2015

@cutejumper Tôi không chắc là tôi theo dõi. Bạn có ý nghĩa gì khi "làm rối tung quan điểm chương trình nghị sự"? Nếu các tiêu đề trong Linux / Lập trình / vv của bạn. ghi chú không có TODOtrạng thái liên quan đến chúng, chúng không nên hiển thị trong chương trình nghị sự của bạn khi bạn liệt kê các mục TODO của mình.
itjeyd 14/03/2015

Chà, cách này có thể rõ ràng hơn: tôi thực sự muốn có các bộ tệp chương trình nghị sự riêng biệt. Sự hiểu biết của tôi về chương trình nghị sự của chế độ tổ chức hiện tại là nó giống như một bộ "toàn cầu" trong khi tôi muốn một giao diện tìm kiếm cho một "dự án" nào đó (giống như dự án) để khi tôi thực hiện tìm kiếm, tôi chỉ thấy nội dung liên quan trong một "dự án". Tôi có bỏ qua bất kỳ chức năng mà chương trình nghị sự thực sự cung cấp?
cutejumper 14/03/2015

Bạn có thể đặt cục bộ thành org-agenda-fileschỉ các tệp (hoặc thư mục) mà bạn quan tâm trong mẫu chương trình nghị sự hoặc sử dụng C-c a <để hạn chế tìm kiếm chương trình nghị sự chỉ với tệp hiện tại.
erikstokes 15/03/2015

1
@cutejumper Tôi không nghĩ bộ đệm chương trình hỗ trợ trường hợp sử dụng này ra khỏi hộp. Tuy nhiên, lệnh @BrianZ đề cập đến trong câu trả lời của anh ấy ( helm-org-agenda-files-headings) thực hiện chính xác những gì bạn muốn (cho các tiêu đề). Lưu ý rằng bạn sẽ cần thiết lập các biến thư mục-cục bộ để có thể chạy helm-org-agenda-files-headingstrên các tập tin cụ thể.
itjeyd 15/03/2015

2

Có một vài chức năng liên quan đến org trong helm. Tôi nghĩ helm-org-agenda-files-headingsvề cơ bản là những gì bạn có trong tâm trí. Nếu nó chưa có sẵn cho bạn trong emacs, hãy thử lấy helm-org.el khỏi Github .

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.