Как найти в Emacs файлы организационного режима с завершением?

У меня есть растущий набор оргфайлов, хранящихся в org-directory. Как я могу перемещаться между ними, желательно с интерактивной фильтрацией и завершением?

Я думал, что есть способ заставить org-mode создавать список известных org-файлов для быстрой навигации, но я не могу его найти. Если в орг-режиме нет этой функции, как мне сделать простую команду, которая запускает что-то вроде helm или icicles, чтобы найти их?


person shader    schedule 15.07.2015    source источник
comment
В EmacsWiki есть несколько примеров использования ido -- например, Вспомогательная функция для выбора в зависимости от режима: emacswiki .org/emacs/InteractivelyDoThings Существуют также уже встроенные меню списка буферов — например, imenu, list-buffers, speedbar (представление буферов) и т. д. — возможна сортировка по основному режиму; а также можно настроить фильтры для отображения только интересующих буферов.   -  person lawlist    schedule 16.07.2015


Ответы (4)


Вопрос мне не очень ясен. Но если все ваши файлы организационного режима имеют определенный шаблон имени файла (например, *.org) и все находятся в одном каталоге (org-directory), то вы можете использовать несколько методов Emacs для доступа к ним:

  1. C-x C-f *.org RETURN в org-directory открывает их все (буферы посещают их, но показывается только последний).

  2. C-x C-f *.org TAB в org-directory, чтобы показать их с помощью завершения, затем выберите любой из них (или выберите более одного, используя шаблон глобуса, как в # 1).

  3. То же, что и № 2, используя Сосульки или Шлем. По крайней мере, в Icicles вы также можете сопоставлять с помощью регулярных выражений и другими способами.

  4. Откройте Dired только для этих файлов: C-x d *.org.

Есть действительно много способов сделать то, что вы описали. Но я предполагаю, что вы недостаточно хорошо описали свой запрос/проблему/вопрос, и когда вы это сделаете, вы получите более узкий набор ответов.


ОБНОВЛЕНИЕ после ваших комментариев:

Вот один из способов: откройте Dired для всех файлов вашей организации в org-directory и ниже.

(defun foo ()
  "Open Dired for (only) the Org files in and under `org-directory`."
  (interactive)
  (cd org-directory)
  (dired "*.org" "-lRF"))

Проверьте это с помощью M-x foo. Поместите это в свой файл инициализации:

(foo)

А вот еще способ: M-x bar или привязать bar к ключу.

(defun bar ()
  "Open an Org file in or under `org-directory`."
  (interactive)
  (let ((default-directory         org-directory)
        (icicle-file-match-regexp  ".*\\.org"))
    (icicle-locate-file-of-content)))
person Drew    schedule 16.07.2015
comment
Да, все мои оргфайлы соответствуют *.org и находятся где-то под org-directory (возможно, в подкаталоге). Я ищу одну команду, которая может настроить поиск аналогично тому, как вы предлагаете, но без необходимости переходить в каталог и каждый раз вводить регулярное выражение. - person shader; 16.07.2015
comment
Это полезно для открытия списка оргфайлов, но не для быстрого перехода к одному из них. Как бы вы сделали то же самое для инициализации одного из параметров файла поиска, которые вы упомянули в № 2 и № 3? - person shader; 16.07.2015

У меня есть пакет, который делает именно это: plain-org-wiki. В этом нет ничего сложного: я просто сбрасываю все свои 45 оргфайлов в один каталог и получаю для них завершение.

person abo-abo    schedule 16.07.2015
comment
Это выглядит довольно близко к тому, что я просил. Есть ли у вас какая-либо документация или советы по его настройке и использованию? Файл readme в вашем репо был бы полезен. - person shader; 16.07.2015

Как насчет org-iswitchb, который уже предоставляется org?

Sпереключаться между буферами организации. С одним префиксным аргументом ограничивайте доступные буферы файлами. С двумя аргументами префикса ограничивайте доступные буферы файлами повестки дня.

Добавьте это в свой файл запуска после загрузки организации: (global-set-key "\C-cb" 'org-iswitchb)

person Jeffrey DeLeo    schedule 22.07.2015

Мое любимое решение — helm-mode, которое активируется с помощью пакета helm от MELPA. Вот демо:

Завершение режима управления

Это действительно отличная среда для быстрого поиска файлов. Кроме того, можно включить нечеткое завершение! Вот минимальная конфигурация (после установки пакета helm):

(require 'helm-config)
(helm-mode 1)
(global-set-key (kbd "C-x C-f") 'helm-find-files)

Вы также можете запустить grep для файлов, если хотите найти их содержимое. Взгляните на это замечательное руководство, если вы хотите узнать больше.

person GJStein    schedule 16.07.2015
comment
Я согласен, что helm крут для интерактивного сужения файлов, но я надеялся узнать, как настроить поиск только для файлов org. Кажется, можно сделать с помощью helm, но я не знаю, как это сделать. - person shader; 16.07.2015