#emacs #org-mode
#emacs #org-mode
Вопрос:
Как скопировать org-файл в другой буфер, если исходный:
** TODO task #1
- some text for task #1
** TODO task #2
- some text for task #2
но когда вы свернете все задачи, это будет выглядеть так
** TODO task #1 ...
** TODO task #2 ...
Я хочу пометить все задачи и скопировать в другой буфер, и это должно выглядеть как второй вариант. Не включайте тексты для задач, которые хранятся внутри каждой задачи.
Как я могу это сделать?
Комментарии:
1. Я думаю, что реальный пример, показывающий состояния до и после, был бы полезен. С вашим текущим описанием я не уверен на 100%, чего вы пытаетесь достичь. Убедитесь, что вы используете синтаксис Stack Overflow «markdown» для форматирования текста примера, иначе вы получите строки, переходящие друг в друга (как это произошло выше).
2. Я думаю, вопрос в том, «Как скопировать только видимый текст из свернутого состояния в буфер организационного режима?»
3.
org-mode
является производным отoutline-mode
, так что, похоже,outline-headers-as-kill
это должно быть актуально, но на самом деле, похоже, это не работает. Хотя, кажется, стоит упомянуть — может быть, есть относительно простое исправление?
Ответ №1:
Согласно комментарию Хенди, в текущих версиях org-mode вы используете org-copy-visible
( C-c C-x v
) для копирования видимого содержимого текущей области в кольцо уничтожения. ( C-x h
можно использовать сначала для разметки всего буфера, как обычно.)
Кроме того, обратите внимание, что меню отправки экспорта ( C-x C-e
) предоставляет переключатель «Только видимый», если вы хотите экспортировать это содержимое в другой формат.
Для более старых версий org-mode по-прежнему должен применяться приведенный ниже оригинальный ответ:
M-x org-export-visible RET SPC
скопирует только видимый в данный момент текст вашего буфера организационного режима в новый буфер.
org-export-visible — это интерактивная скомпилированная функция Lisp в `org-exp.el’.
(org-export-АРГУМЕНТ видимого ТИПА)
Создайте копию видимой части текущего буфера и экспортируйте ее. Копия создается во временном буфере и удаляется после использования. TYPE — это конечный ключ (в виде строки), который также выбирает команду экспорта в диспетчере экспорта `C-c C-e’. В качестве особого случая, если вы введете SPC в командной строке, временный файл org-mode не будет удален, а будет представлен вам, чтобы вы могли продолжать его использовать. Команде экспорта передается префикс arg ARG.
Если вы хотите привязать это (к C-c o
в этом примере), вы могли бы использовать следующее:
(add-hook 'org-mode-hook 'my-org-mode-hook)
(defun my-org-mode-hook ()
"Custom behaviours when entering org-mode."
(local-set-key (kbd "C-c o") (function (lambda () (interactive)
(org-export-visible ?s nil)))))
Комментарии:
1. К вашему сведению: теперь это делается с помощью
C-c C-x v
согласно руководству по orgmode2. Этот ответ великолепен, и грустно, что я уже высказался за него два года назад, потому что я хочу проголосовать за него снова сегодня.
3. Спасибо @NikanaReklawyks 🙂 Я уже оказывался в подобной ситуации раньше. Был даже один случай, когда я не смог проголосовать за ответ, который решил мою проблему, потому что оказалось, что он был написан мной 🙂
4. Это очень полезно, спасибо! Для будущих входящих запросов Google: это также работает для «свернутых» ссылок («описательные ссылки»). Итак, если вы хотите скопировать ссылки без [[…]] элементов, только заголовок, вы можете установить ссылки в «описательные», выбрать и скопировать. Полезно для совместного использования текста организации, содержащего ссылки.
Ответ №2:
Существует org-copy-visible
, который должен делать именно то, что вам нужно.
Комментарии:
1. отлично, именно то, что мне было нужно.
Ответ №3:
Попробуйте M-x org-todo-list
(или C-c a t). При этом отображается список записей о задачах (в файлах, перечисленных в списке файлов повестки дня) в буфере * Org Agenda*.
Возможно, вам потребуется добавить ваш текущий файл в список файлов повестки дня. Из org-agenda
документации:
Если текущий буфер находится в режиме организации и посещает файл, вы также можете сначала нажать ‘<‘ один раз, чтобы указать, что повестка дня должна быть временно (до следующего использования C-ca) ограничена текущим файлом. Двойное нажатие ‘<‘ означает ограничение текущим поддеревом или областью (если она активна).