Чи є простий спосіб вставити посилання в режимі 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, який може допомогти вам вставити посилання в режимі OR в режимі буфера обміну:
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 у цьому буфері.