Orgmode вставити посилання з буфера обміну?


9

Чи є простий спосіб вставити посилання в режимі org безпосередньо з системного буфера обміну? Я думаю вибрати URL-адресу в Safari і вставити це посилання безпосередньо в документ в режимі org.


1
Крім того, дуже приємно налаштувати закладку для автоматичного вставлення посилання за допомогою захоплення. Дивіться тут: orgmode.org/worg/org-contrib/org-protocol.html
mbork

Відповіді:


12

Ваше запитання не є дуже конкретним стосовно того, який тип посилання ви хочете, і що б ви вважали "простим". Якщо припустити, що ви маєте на увазі посилання такої форми:

[[target][description]]

типом роботи за замовчуванням (після введення URL-адреси у буфер обміну) є:

C-c C-l C-y RET description RET

Введення атрибутів descriptionнеобов’язково; якщо не вказати, посилання буде такою формою

[[target]]

Досить просто. Він працює, як очікувалося, на машині Windows, але чомусь не вдається скопіювати / вставити URL-адресу з Firefox або Safari в Emacs на MacOS з Emacs 25.0.50
Alain

@Alain Я не на 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")))))

3

Я створив пакет 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 у цьому буфері.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.