Есть ли простой способ вставить ссылку в режиме org прямо из системного буфера обмена? Я думаю о выборе URL в Safari и вставке этой ссылки непосредственно в документ в режиме org.
Ваш вопрос не очень конкретен в отношении того, какой тип ссылки вы хотите и что вы считаете "простым". Предполагая, что вы имеете в виду ссылку следующей формы:
[[target][description]]
рабочий процесс по умолчанию (после помещения URL в буфер обмена):
C-c C-lC-yRETdescriptionRET
Ввод descriptionнеобязательно; если вы не укажете один, ссылка будет иметь вид
Достаточно просто. Он работает, как и ожидалось, на компьютере с Windows, но по какой-то причине не может скопировать / вставить URL из Firefox или Safari в Emacs на MacOS с Emacs 25.0.50
Ален
@ Ален Я не на MacOS, поэтому я не могу проверить это, но вы можете попробовать использовать x-clipboard-yankвместо того, yankчтобы вставить содержимое буфера обмена. Эта команда не привязана к ключу по умолчанию, поэтому вам придется вызывать ее, используя M-x. Если это решит проблему, вы, конечно, можете установить для нее удобную привязку клавиш (через (global-set-key (kbd "C-c y") 'x-clipboard-yank)).
itjeyd
3
В зависимости от того, какой из двух вариантов вы предпочитаете, вот две функции, которые проверяют, есть ли 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")))))
Это делает запрос 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]]
Ответы:
Ваш вопрос не очень конкретен в отношении того, какой тип ссылки вы хотите и что вы считаете "простым". Предполагая, что вы имеете в виду ссылку следующей формы:
рабочий процесс по умолчанию (после помещения URL в буфер обмена):
C-c C-l C-y RET
description
RETВвод
description
необязательно; если вы не укажете один, ссылка будет иметь видисточник
x-clipboard-yank
вместо того,yank
чтобы вставить содержимое буфера обмена. Эта команда не привязана к ключу по умолчанию, поэтому вам придется вызывать ее, используяM-x
. Если это решит проблему, вы, конечно, можете установить для нее удобную привязку клавиш (через(global-set-key (kbd "C-c y") 'x-clipboard-yank)
).В зависимости от того, какой из двух вариантов вы предпочитаете, вот две функции, которые проверяют, есть ли URL в буфере обмена, и, если да, вставляют его в виде
org-mode
ссылки. Первый делает это в форме[[url]]
, а второй - в форме[[url][description]]
и оставляет вас вdescription
поле.источник
Я создал пакет emacs, который может помочь вам вставить ссылки в режиме org из буфера обмена:
org-cliplink
(также доступно через Melpa)Это делает запрос HTTP на URL из буфера обмена и , если ответ содержит HTML он пытается извлечь название и вставляет ссылку орг-режим в следующем формате:
[[URL][extracted-title]]
.Например, после копирования на этот вопрос по ссылке , делая
M-x org-cliplink
в буфере орг-режиме вставит:и ссылка будет выглядеть как ссылка в режиме org - Orgmode вставить ссылку из буфера обмена? - Emacs Stack Exchange в этом буфере.
источник