La siguiente función elisp tomará un enlace alrededor del punto actual como se reconoce por org-bracket-link-regexp
, por lo tanto , [[Link][Description]]
o [[Link]]
, y lo reemplazará por Description
en el primer caso o Link
en el segundo caso.
(defun afs/org-replace-link-by-link-description ()
"Replace an org link by its description or if empty its address"
(interactive)
(if (org-in-regexp org-bracket-link-regexp 1)
(let ((remove (list (match-beginning 0) (match-end 0)))
(description (if (match-end 3)
(org-match-string-no-properties 3)
(org-match-string-no-properties 1))))
(apply 'delete-region remove)
(insert description))))
[[LINK]]
enlaces de organización de formato. Aprendí sobrematch-beginning
ymatch-end
de tu respuesta.Traté de agregar esto a la respuesta de @Andrew, pero fue demasiado largo para un comentario ...
Realmente me gustó su solución, excepto que movió el cursor. (Técnicamente supongo que movió el punto. De todos modos ...) Afortunadamente, fue fácil agregarlo
save-excursion
para evitar eso:fuente
Llame a este comando cuando el punto esté en cualquier lugar después de los primeros
[[
corchetes de un enlace de organización (o en cualquier lugar en / después de un enlace de organización hipervinculado).Se eliminará un enlace de organización si tiene el formato
[[LINK][DESCRIPTION]]
o está[[LINK]]
en unorg-mode
búfer; de lo contrario no pasará nada.Por seguridad, el ENLACE descartado de org-link se guarda
kill-ring
en el caso de que surja la necesidad de usar ese enlace en otro lugar.fuente
Lo más rápido puede ser colocar el cursor antes del enlace, luego escribir
C-M-space
(mark-sexp
), que marcará el enlace completo. Luego bórrelo escribiendo un retroceso (si lo usadelete-selection-mode
) oC-w
.fuente
Hay una solución que evita el uso de análisis personalizados con expresiones regulares y utiliza directamente la
org-element
API incorporada :fuente
Esta macro muy rápida y muy sucia sería unidireccional, no la mejor:
fuente