Существует множество документов по вставке или хранению ссылок на режим org-mode, но, по-видимому, нет документации по их копированию в буферы других форматов
Как скопировать URL ссылки org-mode из файла org в буфер обмена / список уничтожений с минимальным количеством нажатий клавиш? Я пробовал org-store-linkи org-insert-link, но он сбрасывает весь синтаксис режима оргстекла в любой другой открытый буфер.
Пример: буфер 1 org-mode, буфер 2 Markdown.
Посетите буфер 1, C-sнайдите ссылку.
Волшебство случается , URL находится в буфере обмена
Вот один из способов достижения того, что вы хотите, используя свойства текста.
Вы можете перейти по ссылке в файле org, которую хотите скопировать, и выполнить команду,
my-org-retrieve-url-from-pointкоторая скопирует ссылку org в текущей точке в буфер обмена. Перед добавлением ссылки в буфер обмена my-yank-org-linkрегистрируется yank-handler ( ), который вызывается при вставке ссылки. Обработчик yank проверяет, находится ли текущий буфер в режиме org или в режиме, полученном из режима org, если это так, он вставляет ссылку как есть (ссылка org), в противном случае он извлекает URL из ссылки и вставляет его
(defun my-yank-org-link (text)
(if (derived-mode-p 'org-mode)
(insert text)
(string-match org-bracket-link-regexp text)
(insert (substring text (match-beginning 1) (match-end 1)))))
(defun my-org-retrieve-url-from-point ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
;; org-context seems to return nil if the current element
;; starts at buffer-start or ends at buffer-end
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(add-text-properties 0 (length text) '(yank-handler (my-yank-org-link)) text)
(kill-new text))))
Вот версия DWIM kill-ring-save, которая использует, kill-ring-saveесли регион активен или копирует org-ссылку в точке
Я удалил if, потому что при использовании Emacs с графическим интерфейсом он всегда копировал всю ссылку ( [[a]][b]]) вместо части URL ( a)
Nitz
3
Другая возможность: с курсором на ссылке выполнить org-insert-link. Это нормально C-c C-l. С режимом зла (или, может быть, просто с Spacemacs) , i lтакже работает. Это входит в поток вставки ссылки с предварительно заполненным значением ссылки. Вы можете сделать это, M-x evil-yank-lineпока в минибуфере есть содержимое адреса ссылки.
Этот метод в основном то, что я использую, особенно я иду C-c C-l M-S-<backspace> C-g.
Омар
Это работает, но не так эффективно.
Итиразимвар
2
Поздно к вечеринке (и, кстати, мой первый пост здесь), но я думаю, что это может быть полезно и другим. Принятый ответ отлично работает при повторном извлечении внутри emacs, но фактический текст, скопированный в системный буфер обмена, по-прежнему имеет полный синтаксис режима орг. Я хотел что-то, что могло бы скопировать ссылку из org-mode и emacs. Примеры использования: в последнее время я много занимался веб-разработкой и часто использую несколько браузеров. Только один из них может быть по умолчанию для C-c c-oярлыка, и иногда я хочу открыть ссылку не по умолчанию. Кроме того, вставка ссылок на сотрудников в Slack, и так далее.
Короче говоря, я придумал это решение, смешав и сопоставив принятый ответ :
Это скопирует в буфер обмена ссылку только часть ссылки в режиме орг.
На самом деле, я интегрировал как решение предыдущего ответа, так и эту новую функцию в моем .emacs , каждая со своей привязкой клавиш. Полный код здесь:
Я выбрал C-c eи C-c cкомбинации клавиш , потому что они являются хорошими Мнемоника для eXPort и cпировать , и они не используются в орг-режиме. Они также как-то сочетаются с уже существующей связкой клавиш C-c C-oдля написания oссылок.
if
, потому что при использовании Emacs с графическим интерфейсом он всегда копировал всю ссылку ([[a]][b]]
) вместо части URL (a
)Другая возможность: с курсором на ссылке выполнить
org-insert-link
. Это нормальноC-c C-l
. С режимом зла (или, может быть, просто с Spacemacs), i l
также работает. Это входит в поток вставки ссылки с предварительно заполненным значением ссылки. Вы можете сделать это,M-x evil-yank-line
пока в минибуфере есть содержимое адреса ссылки.источник
C-c C-l M-S-<backspace> C-g
.Поздно к вечеринке (и, кстати, мой первый пост здесь), но я думаю, что это может быть полезно и другим. Принятый ответ отлично работает при повторном извлечении внутри emacs, но фактический текст, скопированный в системный буфер обмена, по-прежнему имеет полный синтаксис режима орг. Я хотел что-то, что могло бы скопировать ссылку из org-mode и emacs. Примеры использования: в последнее время я много занимался веб-разработкой и часто использую несколько браузеров. Только один из них может быть по умолчанию для
C-c c-o
ярлыка, и иногда я хочу открыть ссылку не по умолчанию. Кроме того, вставка ссылок на сотрудников в Slack, и так далее.Короче говоря, я придумал это решение, смешав и сопоставив принятый ответ :
Это скопирует в буфер обмена ссылку только часть ссылки в режиме орг.
На самом деле, я интегрировал как решение предыдущего ответа, так и эту новую функцию в моем
.emacs
, каждая со своей привязкой клавиш. Полный код здесь:Я выбрал
C-c e
иC-c c
комбинации клавиш , потому что они являются хорошими Мнемоника дляe
XPort иc
пировать , и они не используются в орг-режиме. Они также как-то сочетаются с уже существующей связкой клавишC-c C-o
для написанияo
ссылок.источник