Risposte:
Il nodo Manuale Org su Motion fornisce una descrizione alquanto laconica del comando incorporato org-goto
(associazione predefinita:) C-c C-j
, il cui comportamento può essere facilmente personalizzato per ottenere l'effetto desiderato:
C-h v org-goto-interface RET
Se sei felice di rinunciare al org-goto
comportamento predefinito della ricerca incrementale attraverso la struttura del buffer, puoi passare a scegliere un titolo al termine:
(setq org-goto-interface 'outline-path-completion)
Gli utenti di pacchetti di completamento come ido
/ ivy
/ helm
probabilmente vorranno modificare le seguenti impostazioni per vedere l'intero percorso target contemporaneamente:
(setq org-outline-path-complete-in-steps nil)
Vedi qui per ulteriori discussioni.
Questo approccio ha il vantaggio (oltre utilizzando, per esempio, helm
la funzionalità -specifica) di lavorare con tutti i framework di completamento che spina nella predefinito completing-read
, tra cui, come posso personalmente confermare, ivy
.
APPENDICE:
Quando si utilizza l' outline-path-completion
interfaccia per il org-goto
comando come descritto in questa risposta, la variabile personalizzabile org-goto-max-level
determina la profondità massima dei titoli da offrire.
MODIFICARE:
Ho trovato una domanda più vecchia e pertinente con risposte utili: /programming//q/15011703/3084001
CHIARIMENTO (come richiesto dal commento di Att Righ):
L'impostazione org-goto-interface
su uno dei due valori riconosciuti non significa sacrificare l'interfaccia alternativa. La chiamata org-goto
con un argomento prefisso (ovvero C-u C-c C-j
o C-u M-x org-goto RET
) seleziona automaticamente l'interfaccia alternativa per il completamento corrente. In questo modo, è possibile impostare org-goto-interface
l'interfaccia che è probabile che si utilizzi più spesso e utilizzare l'argomento prefisso quando si desidera cambiare temporaneamente il comportamento. Se anche questo non soddisfa le tue esigenze, puoi sempre scrivere il tuo wrapper org-goto
, come nell'esempio di Att Righ.
outline-path-completion
non gioca bene con helm
sulla mia scatola (non può completare oltre un livello - raggiunto premendo <TAB>
se helm
è disabilitato: vedi helm-completing-read-handlers-alist
)
let
espressioni possono essere usate per qualsiasi tipo di associazione temporanea; questa domanda riguarda maggiormente le impostazioni / funzionalità / i pacchetti pertinenti. Un modo più generale per ottenere un passaggio temporaneo di interfaccia è chiamare org-goto
con un argomento prefisso. Aggiungerò una nota a questa risposta.
ivy
, ma solo durante il refiling e con un'impostazione di profondità errata org-refile-targets
, poiché org-goto
adatta temporaneamente le impostazioni rilevanti per il refile in base alle sue esigenze. Purtroppo non sono in grado di esplorare la helm
funzionalità al momento, forse un altro utente può intervenire?
worf
o counsel-imenu
.
Uso il pacchetto worf , ma associo solo una delle sue funzioni:
(use-package worf
:diminish worf-mode
:bind (:map org-mode-map ("C-c h" . worf-goto)))
worf-goto
ti fornisce un elenco delle intestazioni nel buffer nel mini buffer, che puoi quindi filtrare.
Il pacchetto è stato creato dall'autore di edera , quindi se ti piace l'edera, ti potrebbe piacere Worf.
Alcuni frammenti rilevanti di 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
il completamento funziona meglio di Worf ma non può cercare tra i titoli dell'organizzazione di livello 1. worfs cerca tutti i livelli, quindi penso che questo sia quello che sto cercando.
org-imenu-depth
qualcosa di più grande del valore predefinito di 2?
Trovo il fucile helm-org particolarmente piacevole. Anche tutto ciò che prende la fonte imenu sarà in grado di visualizzare le intestazioni (ad esempio Helm con imenu).
helm-org-rifle
cerca il contenuto delle voci dell'organizzazione oltre ai loro titoli. Non ho trovato alcun modo per modificare questo comportamento. helm-org-rifle
riferimenti org-search-goto
che eseguono ricerche in tutti i titoli ma non supportano realmente la ricerca confusa.
helm-org-rifle
non cerca solo le intestazioni. Potrebbe essere espanso per fare questo, ma ci sono poche ragioni per farlo, dal momento che helm-org-in-buffer-headings
, ecc. Esistono in Helm stesso.
Flagrante autopromozione, ma potresti provare orgnav . Qual è il mio tipo di progetto alfa (ma attivamente utilizzato da me) per questo scopo.
orgnav cerca i titoli piuttosto che i contenuti, può variare la profondità della ricerca, cercare i sottotitoli piuttosto che l'intero file (anche se questo può essere ottenuto anche con il restringimento).
Ecco un video di alcune funzionalità: https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u
Probabilmente dovresti anche essere consapevole del helm-org
pacchetto che fa parte helm
dell'ispirazione per questo pacchetto (o piuttosto i cui limiti erano l'ispirazione per questo pacchetto), così come helm-org-rifle
discusso in altri post.
(Per gentile concessione di risposte qui: https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_directly_to_an_orgheadline/
) Anche potenzialmente interessante è la worf-goto
funzione come parte di worf
(una modalità di navigazione dell'organizzazione che applica un diverso set di combinazioni di tasti oltre "*" prima dei titoli). Questo sembra molto analogo a helm-org
.
La libreria swiper ha una nuova funzionalità in 0.9.0, che è il completamento per i titoli dei file nei tuoi file agenda-org.
consiglio-org-giorno-titoli
Devo solo impostare l'elenco dei file dell'agenda in init init.
(setq org-agenda-files (list "~/org/work.org"
"~/org/school.org"
"~/org/home.org"))
In relazione alla risposta di @ tirocinium, questo fornisce lo stesso ma per molti file dell'agenda.
Mi raccomando helm-org-in-buffer-headings
. È integrato in Helm e rispetta i buffer ristretti, il che è importante se si utilizzano i buffer indiretti per modificare i sottotitoli in modo indipendente. C'è anche helm-org-parent-headings
per navigare su un albero e helm-org-agenda-files-headings
per navigare attraverso tutti i file dell'agenda.
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))