Odpowiedzi:
Węzeł Org Manual na Motion podaje nieco lakoniczny opis wbudowanego polecenia org-goto(domyślne wiązanie:) C-c C-j, którego zachowanie można łatwo dostosować, aby osiągnąć pożądany efekt:
C-h v org-goto-interface RETJeśli zechcesz zrezygnować z domyślnego org-gotozachowania polegającego na stopniowym przeszukiwaniu konturu bufora, możesz przejść do wybrania nagłówka po zakończeniu:
(setq org-goto-interface 'outline-path-completion)Użytkownicy pakietów uzupełniających, takich jak ido/ ivy/ helm, prawdopodobnie będą chcieli zmienić następujące ustawienie, aby jednocześnie zobaczyć całą ścieżkę docelową:
(setq org-outline-path-complete-in-steps nil)
Zobacz tutaj, aby uzyskać więcej dyskusji.
Podejście to ma tę dodatkową zaletę (ponad użyciu, powiedzmy, helmspecyficzny zestaw funkcjonalności) pracy ze wszystkimi ramami ukończenia tej wtyczki do domyślnie completing-read, w tym, jak mogę osobiście potwierdzić, ivy.
UZUPEŁNIENIE:
Podczas używania outline-path-completioninterfejsu org-gotopolecenia zgodnie z opisem w tej odpowiedzi konfigurowalna zmienna org-goto-max-levelokreśla maksymalną głębokość nagłówków do zaoferowania.
EDYTOWAĆ:
Znalazłem starsze, odpowiednie pytanie z przydatnymi odpowiedziami: /programming//q/15011703/3084001
WYJAŚNIENIE (zgodnie z komentarzem Att Righa):
Ustawienie org-goto-interfacejednej z dwóch rozpoznawanych wartości nie oznacza poświęcenia alternatywnego interfejsu. Wywołanie org-gotoz argumentem przedrostka (tj. C-u C-c C-jLub C-u M-x org-goto RET) automatycznie wybiera alternatywny interfejs dla bieżącego zakończenia. W ten sposób możesz ustawić org-goto-interfaceinterfejs, którego najczęściej używasz, i użyć argumentu prefiksu, jeśli chcesz tymczasowo zmienić zachowanie. Jeśli nawet to nie odpowiada Twoim potrzebom, zawsze możesz napisać własne opakowanie org-goto, jak na przykładzie Att Righa.
outline-path-completionnie gra ładnie helmna moim pudełku (nie można ukończyć pierwszego poziomu - osiąga się przez naciśnięcie, <TAB>jeśli helm jest wyłączone: patrz helm-completing-read-handlers-alist)
letmożna użyć do dowolnego rodzaju tymczasowego wiązania; to pytanie dotyczy bardziej odpowiednich ustawień / funkcjonalności / pakietów. Bardziej ogólnym sposobem uzyskania tymczasowego przełączenia interfejsu jest wywołanie org-gotoz argumentem przedrostka. Dodam notatkę do tej odpowiedzi.
ivy, ale tylko podczas uzupełniania i z niepoprawnym ustawieniem głębokości org-refile-targets, ponieważ org-gototymczasowo dostosowuje ustawienia dotyczące ponownego dopasowania do swoich potrzeb. Niestety helmw tej chwili nie jestem w stanie zbadać tej funkcjonalności, być może inny użytkownik może się do niej włączyć?
worflub counsel-imenu.
Korzystam z pakietu worf , ale wiążę tylko jedną z jego funkcji:
(use-package worf
:diminish worf-mode
:bind (:map org-mode-map ("C-c h" . worf-goto)))
worf-goto daje listę nagłówków w buforze w mini buforze, które można następnie filtrować.
Pakiet jest wykonany przez autora bluszczu , więc jeśli lubisz bluszcz, możesz polubić worf.
Niektóre odpowiednie fragmenty z 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-imenuUkończenie działa lepiej niż worf, ale nie można przeszukiwać nagłówków org poziomu 1. worfs przeszukuje wszystkie poziomy, więc myślę, że tego właśnie szukam.
org-imenu-depthcoś większego niż domyślny 2?
Uważam, że karabin-org-karabin jest szczególnie miły. Również wszystko, co pobiera źródło imenu, będzie mogło wyświetlać nagłówki (np. Hełm z imenu).
helm-org-rifleprzeszukuje zawartość wpisów organizacji oprócz ich tytułów. Nie znalazłem sposobu na zmianę tego zachowania. helm-org-riflereferencje, org-search-gotoktóre wyszukują wszystkie nagłówki, ale tak naprawdę nie obsługują wyszukiwania rozmytego.
helm-org-riflenie wyszukuje tylko nagłówków. Można to rozszerzyć, aby to zrobić, ale nie ma tego powodu, ponieważ helm-org-in-buffer-headingsitp. Istnieją w samym Hełmie.
Rażąca autopromocja, ale możesz wypróbować orgnav . Który jest moim rodzajem projektu alfa (ale aktywnie przeze mnie wykorzystywanego) do tego celu.
orgnav przeszukuje nagłówki, a nie treść, może zmieniać głębokość wyszukiwania, poddrzewa wyszukiwania zamiast całego pliku (chociaż można to również osiągnąć poprzez zawężenie).
Oto wideo niektórych funkcji: https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u
Prawdopodobnie powinieneś także wiedzieć o helm-orgpakiecie, którego częścią helmbyła inspiracja dla tego pakietu (a raczej którego ograniczeniami była inspiracja dla tego pakietu), a także helm-org-rifleomówionym w innych postach.
(Dzięki uprzejmości odpowiedzi tutaj: https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_directly_to_an_orgheadline/
) Również potencjalnie interesująca jest worf-gotofunkcja jako część worf(tryb nawigacji w organie, który stosuje inny zestaw skrótów klawiszowych „*” przed nagłówkami). Wydaje się to bardzo analogiczne do helm-org.
Swiper Biblioteka posiada nową funkcję w 0.9.0, która jest zakończenie dla nagłówków plików w org-agenda-plików.
counsell-org-agenda-headlines
Wystarczy skonfigurować listę plików agendy w org init.
(setq org-agenda-files (list "~/org/work.org"
"~/org/school.org"
"~/org/home.org"))
W odniesieniu do odpowiedzi @ tirocinium zapewnia to to samo, ale dla wielu plików agendy.
Polecam helm-org-in-buffer-headings. Jest wbudowany w Helm i szanuje zawężone bufory, co jest ważne, jeśli używasz buforów pośrednich do niezależnej edycji poddrzewa. Istnieje również helm-org-parent-headingsnawigacja w górę drzewa i helm-org-agenda-files-headingsnawigacja we wszystkich plikach agendy.
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))