Câu trả lời:
Nút Org Manual trên Motion cung cấp một mô tả hơi đơn giản về lệnh tích hợp org-goto
(ràng buộc mặc định C-c C-j
:), có hành vi có thể dễ dàng được tùy chỉnh để đạt được hiệu quả mong muốn:
C-h v org-goto-interface RET
Nếu bạn vui lòng từ bỏ org-goto
hành vi mặc định tìm kiếm tăng dần thông qua phác thảo của bộ đệm, bạn có thể chuyển sang chọn một tiêu đề thông qua hoàn thành:
(setq org-goto-interface 'outline-path-completion)
Người dùng của các gói hoàn thành như ido
/ ivy
/ helm
có thể sẽ muốn thay đổi cài đặt sau để xem toàn bộ đường dẫn đích cùng một lúc:
(setq org-outline-path-complete-in-steps nil)
Xem ở đây để thảo luận thêm.
Cách tiếp cận này có thêm lợi ích (hơn là sử dụng helm
chức năng cụ thể) khi làm việc với tất cả các khung hoàn thành cắm vào mặc định completing-read
, bao gồm, như cá nhân tôi có thể xác nhận , ivy
.
ĐỊA CHỈ:
Khi sử dụng outline-path-completion
giao diện cho org-goto
lệnh như được mô tả trong câu trả lời này, biến tùy chỉnh sẽ org-goto-max-level
xác định độ sâu tối đa của tiêu đề sẽ cung cấp.
BIÊN TẬP:
Tôi tìm thấy một câu hỏi cũ hơn, có liên quan với câu trả lời hữu ích: /programming//q/15011703/3084001
XÁC NHẬN (như được nhắc bởi nhận xét của Att Righ):
Đặt org-goto-interface
thành một trong hai giá trị được công nhận không có nghĩa là hy sinh giao diện thay thế. Gọi org-goto
với một đối số tiền tố (tức là C-u C-c C-j
hoặc C-u M-x org-goto RET
) tự động chọn giao diện thay thế cho việc hoàn thành hiện tại. Bằng cách này, bạn có thể thiết lập org-goto-interface
giao diện mà bạn có khả năng sử dụng thường xuyên nhất và sử dụng đối số tiền tố khi bạn muốn tạm thời chuyển đổi hành vi. Nếu thậm chí điều này không phù hợp với nhu cầu của bạn, bạn luôn có thể viết trình bao bọc của riêng mình org-goto
, theo ví dụ của Att Righ.
outline-path-completion
không chơi độc đáo với helm
hộp của tôi (nó không thể hoàn thành qua một cấp - đạt được bằng cách nhấn <TAB>
nếu helm
bị vô hiệu hóa: xem helm-completing-read-handlers-alist
)
let
biểu hiện có thể được sử dụng cho bất kỳ loại ràng buộc tạm thời nào; câu hỏi này là nhiều hơn về các cài đặt / chức năng / gói có liên quan. Một cách tổng quát hơn để đạt được một chuyển đổi tạm thời của giao diện là gọi org-goto
với một đối số tiền tố. Tôi sẽ thêm một ghi chú cho câu trả lời này.
ivy
, nhưng chỉ khi nạp lại và với cài đặt độ sâu không chính xác org-refile-targets
, vì org-goto
tạm thời điều chỉnh các cài đặt liên quan đến refile cho phù hợp với nhu cầu của nó. Thật không may, tôi không ở vị trí để khám phá helm
chức năng tại thời điểm này, có lẽ một người dùng khác có thể kêu gọi?
worf
hoặc counsel-imenu
.
Tôi sử dụng gói worf , nhưng tôi chỉ ràng buộc một trong các chức năng của nó:
(use-package worf
:diminish worf-mode
:bind (:map org-mode-map ("C-c h" . worf-goto)))
worf-goto
cung cấp cho bạn một danh sách các tiêu đề trong bộ đệm trong bộ đệm mini, sau đó bạn có thể lọc.
Gói được thực hiện bởi tác giả của cây thường xuân , vì vậy nếu bạn thích cây thường xuân, bạn có thể thích worf.
Một số đoạn có liên quan từ worf.el:
;; - "g" (`worf-goto'): select an outline in the current buffer, with
;; completion. It's very good when you want to search/navigate to
;; a heading by word or level. See https://github.com/abo-abo/lispy
;; for a package that uses this method to navigate Lisp code.
(defun worf-goto-action (x)
(with-ivy-window
(goto-char (cdr x))
(outline-show-children 1000)
(worf-more)))
(defun worf-goto ()
"Jump to a heading with completion."
(interactive)
(let ((cands (worf--goto-candidates)))
(cond ((eq worf-completion-method 'helm)
(require 'helm-multi-match)
(let (helm-update-blacklist-regexps
helm-candidate-number-limit)
(helm :sources
`((name . "Headings")
(candidates . ,cands)
(action . worf-goto-action)
(pattern-transformer . worf--pattern-transformer)))))
((eq worf-completion-method 'ivy)
(ivy-read "Heading: " cands
:action 'worf-goto-action)))))
counsel-imenu
hoàn thành hoạt động tốt hơn worf nhưng không thể tìm kiếm thông qua các tiêu đề org cấp 1. worfs tìm kiếm tất cả các cấp, vì vậy tôi nghĩ đây là những gì tôi đang tìm kiếm.
org-imenu-depth
thành thứ gì đó lớn hơn mặc định của 2 chưa?
Tôi thấy helm-org-rifle đặc biệt tốt. Ngoài ra, bất cứ thứ gì lấy nguồn imothy đều có thể hiển thị các tiêu đề (ví dụ: Helm với imothy).
helm-org-rifle
tìm kiếm nội dung của các mục org ngoài tiêu đề của chúng. Tôi không tìm thấy cách nào để thay đổi hành vi này. helm-org-rifle
tài liệu tham khảo org-search-goto
tìm kiếm tất cả các tiêu đề nhưng không thực sự hỗ trợ tìm kiếm mờ.
helm-org-rifle
không chỉ tìm kiếm tiêu đề. Nó có thể được mở rộng để làm điều này, nhưng có rất ít lý do để làm như vậy, vì helm-org-in-buffer-headings
, v.v. tồn tại trong chính Helm.
Tự quảng cáo trắng trợn, nhưng bạn có thể muốn dùng thử orgnav . Đó là loại alpha (nhưng được tôi sử dụng tích cực) cho mục đích này.
orgnav tìm kiếm các tiêu đề thay vì nội dung, có thể thay đổi độ sâu tìm kiếm, tìm kiếm phụ hơn là toàn bộ tệp (mặc dù điều này cũng có thể đạt được khi thu hẹp).
Đây là video về một số tính năng: https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u
Có lẽ bạn cũng nên biết về helm-org
gói đó là một phần trong helm
đó là nguồn cảm hứng cho gói này (hay đúng hơn là những hạn chế của nó là nguồn cảm hứng cho gói này), cũng như được helm-org-rifle
thảo luận trong các bài đăng khác.
(Ảnh cung cấp câu trả lời ở đây: https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_directly_to_an_orgheadline/
) Cũng có khả năng quan tâm là các worf-goto
chức năng như là một phần của worf
(một chế độ chuyển hướng org áp dụng một bộ khác nhau của keybindings trên "*" trước các tiêu đề). Điều này có vẻ rất giống với helm-org
.
Các swiper thư viện có một tính năng mới trong 0.9.0, đó là hoàn thành cho các tiêu đề của tập tin trong org-chương trình nghị sự-tập tin của bạn.
tư vấn-org-agenda-tiêu đề
Chỉ cần thiết lập danh sách tập tin chương trình nghị sự của bạn trong org init.
(setq org-agenda-files (list "~/org/work.org"
"~/org/school.org"
"~/org/home.org"))
Liên quan đến câu trả lời của @ tirocinium, điều này cung cấp tương tự nhưng đối với nhiều tệp chương trình nghị sự.
Tôi đề nghị helm-org-in-buffer-headings
. Nó được tích hợp sẵn với Helm và nó tôn trọng các bộ đệm bị thu hẹp, điều này rất quan trọng nếu bạn sử dụng bộ đệm gián tiếp để chỉnh sửa các cây con một cách độc lập. Ngoài ra còn có helm-org-parent-headings
để điều hướng lên một cái cây và helm-org-agenda-files-headings
để điều hướng trên tất cả các tệp chương trình nghị sự.
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))