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 RET
Jeśli zechcesz zrezygnować z domyślnego org-goto
zachowania 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, helm
specyficzny 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-completion
interfejsu org-goto
polecenia zgodnie z opisem w tej odpowiedzi konfigurowalna zmienna org-goto-max-level
okreś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-interface
jednej z dwóch rozpoznawanych wartości nie oznacza poświęcenia alternatywnego interfejsu. Wywołanie org-goto
z argumentem przedrostka (tj. C-u C-c C-j
Lub 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-interface
interfejs, 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-completion
nie gra ładnie helm
na 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
)
let
moż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-goto
z 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-goto
tymczasowo dostosowuje ustawienia dotyczące ponownego dopasowania do swoich potrzeb. Niestety helm
w tej chwili nie jestem w stanie zbadać tej funkcjonalności, być może inny użytkownik może się do niej włączyć?
worf
lub 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-imenu
Ukoń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-depth
coś 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-rifle
przeszukuje zawartość wpisów organizacji oprócz ich tytułów. Nie znalazłem sposobu na zmianę tego zachowania. helm-org-rifle
referencje, org-search-goto
które wyszukują wszystkie nagłówki, ale tak naprawdę nie obsługują wyszukiwania rozmytego.
helm-org-rifle
nie wyszukuje tylko nagłówków. Można to rozszerzyć, aby to zrobić, ale nie ma tego powodu, ponieważ helm-org-in-buffer-headings
itp. 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-org
pakiecie, którego częścią helm
była inspiracja dla tego pakietu (a raczej którego ograniczeniami była inspiracja dla tego pakietu), a także helm-org-rifle
omó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-goto
funkcja 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-headings
nawigacja w górę drzewa i helm-org-agenda-files-headings
nawigacja we wszystkich plikach agendy.
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))