Викличте цю команду, коли точка знаходиться десь після перших [[
дужок org-ланки (або де-небудь на / після гіперпов'язаного органопосилання).
Органічне посилання буде видалено, якщо воно формату [[LINK][DESCRIPTION]]
або [[LINK]]
в org-mode
буфері; інакше нічого не станеться.
Для безпеки відмінений LINK з org-посилання зберігається kill-ring
у випадку, якщо виникає потреба використовувати це посилання в іншому місці.
(defun my/org-delete-link ()
"Replace an org link of the format [[LINK][DESCRIPTION]] with DESCRIPTION.
If the link is of the format [[LINK]], delete the whole org link.
In both the cases, save the LINK to the kill-ring.
Execute this command while the point is on or after the hyper-linked org link."
(interactive)
(when (derived-mode-p 'org-mode)
(let ((search-invisible t) start end)
(save-excursion
(when (re-search-backward "\\[\\[" nil :noerror)
(when (re-search-forward "\\[\\[\\(.*?\\)\\(\\]\\[.*?\\)*\\]\\]" nil :noerror)
(setq start (match-beginning 0))
(setq end (match-end 0))
(kill-new (match-string-no-properties 1)) ; Save the link to kill-ring
(replace-regexp "\\[\\[.*?\\(\\]\\[\\(.*?\\)\\)*\\]\\]" "\\2" nil start end)))))))
[[LINK]]
формату org посилань. Я дізнався проmatch-beginning
таmatch-end
з вашої відповіді.