Есть ли простой способ вставить ссылку в режиме org прямо из системного буфера обмена? Я думаю о выборе URL в Safari и вставке этой ссылки непосредственно в документ в режиме org.
Есть ли простой способ вставить ссылку в режиме org прямо из системного буфера обмена? Я думаю о выборе URL в Safari и вставке этой ссылки непосредственно в документ в режиме org.
Ответы:
Ваш вопрос не очень конкретен в отношении того, какой тип ссылки вы хотите и что вы считаете "простым". Предполагая, что вы имеете в виду ссылку следующей формы:
[[target][description]]
рабочий процесс по умолчанию (после помещения URL в буфер обмена):
C-c C-l C-y RET description RET
Ввод descriptionнеобязательно; если вы не укажете один, ссылка будет иметь вид
[[target]]
x-clipboard-yankвместо того, yankчтобы вставить содержимое буфера обмена. Эта команда не привязана к ключу по умолчанию, поэтому вам придется вызывать ее, используя M-x. Если это решит проблему, вы, конечно, можете установить для нее удобную привязку клавиш (через (global-set-key (kbd "C-c y") 'x-clipboard-yank)).
В зависимости от того, какой из двух вариантов вы предпочитаете, вот две функции, которые проверяют, есть ли URL в буфере обмена, и, если да, вставляют его в виде org-modeссылки. Первый делает это в форме [[url]], а второй - в форме [[url][description]]и оставляет вас в descriptionполе.
(defun insert-url-as-org-link-sparse ()
"If there's a URL on the clipboard, insert it as an org-mode
link in the form of [[url]]."
(interactive)
(let ((link (substring-no-properties (x-get-selection 'CLIPBOARD)))
(url "\\(http[s]?://\\|www\\.\\)"))
(save-match-data
(if (string-match url link)
(insert (concat "[[" link "]]"))
(error "No URL on the clipboard")))))
(defun insert-url-as-org-link-fancy ()
"If there's a URL on the clipboard, insert it as an org-mode
link in the form of [[url][*]], and leave point at *."
(interactive)
(let ((link (substring-no-properties (x-get-selection 'CLIPBOARD)))
(url "\\(http[s]?://\\|www\\.\\)"))
(save-match-data
(if (string-match url link)
(progn
(insert (concat "[[" link "][]]"))
(backward-char 2))
(error "No URL on the clipboard")))))
Я создал пакет emacs, который может помочь вам вставить ссылки в режиме org из буфера обмена:
org-cliplink (также доступно через Melpa)Это делает запрос HTTP на URL из буфера обмена и , если ответ содержит HTML он пытается извлечь название и вставляет ссылку орг-режим в следующем формате: [[URL][extracted-title]].
Например, после копирования на этот вопрос по ссылке , делая M-x org-cliplinkв буфере орг-режиме вставит:
[[https://emacs.stackexchange.com/q/3280][org mode - Orgmode insert link from clipboard? - Emacs Stack Exchange]]
и ссылка будет выглядеть как ссылка в режиме org - Orgmode вставить ссылку из буфера обмена? - Emacs Stack Exchange в этом буфере.