Узел Org Manual в Motion дает несколько лаконичное описание встроенной команды org-goto
(связывание по умолчанию:) C-c C-j
, поведение которой можно легко настроить для достижения желаемого эффекта:
- Проверьте документацию настраиваемой переменной, перечисленной в конце этого узла:
C-h v org-goto-interface RET
Если вы счастливы отказаться от org-goto
поведения по умолчанию при постепенном поиске по схеме буфера, вы можете переключиться на выбор заголовка через завершение:
(setq org-goto-interface 'outline-path-completion)
Пользователи пакетов завершения, такие как ido
/ ivy
/ helm
, вероятно, захотят изменить следующую настройку, чтобы сразу увидеть весь целевой путь:
(setq org-outline-path-complete-in-steps nil)
Смотрите здесь для дальнейшего обсуждения.
Такой подход имеет дополнительное преимущество ( по сравнению с использованием, скажем, helm
-специфическая функциональностью) работой со всеми рамками завершения этой вилки в значении по умолчанию completing-read
, в том числе, как я могу лично подтвердить, ivy
.
ДОПОЛНЕНИЕ:
При использовании outline-path-completion
интерфейса с org-goto
командой, как описано в этом ответе, настраиваемая переменная org-goto-max-level
определяет максимальную глубину заголовков, которые можно предложить.
РЕДАКТИРОВАТЬ:
Я нашел более старый, актуальный вопрос с полезными ответами: /programming//q/15011703/3084001
УТОЧНЕНИЕ (как подсказано комментарием Атта Рая):
Установка org-goto-interface
одного из двух распознанных значений не означает жертвование альтернативным интерфейсом. Вызов org-goto
с префиксным аргументом (т. Е. C-u C-c C-j
Или C-u M-x org-goto RET
) автоматически выбирает альтернативный интерфейс для текущего завершения. Таким образом, вы можете установить org-goto-interface
интерфейс, который вы, вероятно, будете использовать чаще всего, и использовать префиксный аргумент, если вы хотите временно изменить поведение. Если даже это не соответствует вашим потребностям, вы всегда можете написать свою собственную обертку org-goto
, как в примере с Att Righ.
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))
outline-path-completion
не очень хорошо играетhelm
на моем боксе (он не может пройти более одного уровня - достигается нажатием<TAB>
ifhelm
is disabled: seehelm-completing-read-handlers-alist
)let
выражения могут быть использованы для любого вида временной привязки; этот вопрос больше о соответствующих настройках / функциональности / пакетах. Более общим способом достижения временного переключения интерфейса является вызовorg-goto
с префиксным аргументом. Я добавлю примечание к этому ответу.ivy
, но только при рефилировании и с неправильной настройкой глубиныorg-refile-targets
, посколькуorg-goto
временно адаптирует релевантные для рефиллинга настройки в соответствии со своими потребностями. К сожалению, я не в состоянии изучитьhelm
функциональность в данный момент, может быть, другой пользователь может подключиться?worf
илиcounsel-imenu
.Я использую пакет worf , но связываю только одну из его функций:
worf-goto
выдает список заголовков в буфере в мини-буфере, который затем можно отфильтровать.Пакет сделан автором ivy , поэтому если вам нравится ivy, вам может понравиться worf.
Некоторые соответствующие фрагменты из worf.el:
источник
counsel-imenu
завершение работает лучше, чем worf, но не может искать в заголовках org уровня 1. worfs ищет все уровни, поэтому я думаю, что это то, что я ищу.org-imenu-depth
что-то большее, чем значение по умолчанию 2?Я считаю рулевую винтовку особенно приятной. Также все, что берет источник imenu, сможет отображать заголовки (например, Helm with imenu).
источник
helm-org-rifle
поиск по содержанию записей орг в дополнение к их заголовкам. Я не нашел способа изменить это поведение.helm-org-rifle
ссылки,org-search-goto
которые ищут все заголовки, но не поддерживают нечеткий поиск.helm-org-rifle
не ищет только заголовки. Его можно расширить, чтобы сделать это, но для этого нет особых причин, посколькуhelm-org-in-buffer-headings
в самом Хелме существует и т. Д.imenu
встроен в Emacs и может быть соединен с helm / ivy для обеспечения нечеткого поиска. Я бы порекомендовал,helm-org-rifle
если вы используете шлем, однако.источник
Самореклама вопиющая, но вы можете попробовать orgnav . Это мой альфа-проект (но активно используемый мной) для этой цели.
orgnav ищет заголовки, а не содержимое, может варьировать глубину поиска, искать поддеревья, а не весь файл (хотя это также может быть достигнуто с помощью сужения).
Вот видео некоторых функций: https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u
Вам, вероятно, также следует знать о
helm-org
пакете, частьюhelm
которого явилась идея этого пакета (точнее, чьи ограничения были источником вдохновения для этого пакета), а такжеhelm-org-rifle
обсуждаться в других постах.(Предоставлено ответы здесь: https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_directly_to_an_orgheadline/ ) Также потенциально представляет интерес
worf-goto
функция как частьworf
(режим навигации org, который применяет другой набор сочетаний клавиш над "*" перед заголовками). Это выглядит очень похоже наhelm-org
.источник
В библиотеке swiper появилась новая функция 0.9.0, которая дополняет заголовки файлов в ваших файлах org-повестки дня.
Просто нужно настроить список файлов повестки дня в org init.
Что касается ответа @ tirocinium, то это то же самое, но для многих файлов повестки дня.
источник
Я использую
counsel-imenu
; в нем будут перечислены различные заголовки, вы можете ввести несколько букв, чтобы сузить свой выбор, а затем просто нажать<return>
.источник
Я рекомендую
helm-org-in-buffer-headings
. Он встроен в Helm и учитывает суженные буферы, что важно, если вы используете косвенные буферы для независимого редактирования поддеревьев. Существует такжеhelm-org-parent-headings
для навигации по дереву, а такжеhelm-org-agenda-files-headings
для навигации по всем файлам повестки дня.источник