La fonction elisp suivante prendra un lien autour du point actuel comme reconnu par org-bracket-link-regexp
, donc soit [[Link][Description]]
ou [[Link]]
, et le remplacera par Description
dans le premier cas ou Link
dans le second cas.
(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]]
liens de format d'organisation. J'ai entendu parler dematch-beginning
etmatch-end
de votre réponse.J'ai essayé d'ajouter ceci à la réponse de @Andrew, mais c'était trop long pour un commentaire ...
J'ai vraiment aimé sa solution, sauf qu'elle a déplacé le curseur. (Techniquement, je suppose que cela a fait bouger le sujet. Quoi qu'il en soit ...) Heureusement, il a été facile d'ajouter
save-excursion
pour éviter cela:la source
Appelez cette commande lorsque le point se trouve n'importe où après les premières
[[
crochets d'un lien organisationnel (ou n'importe où sur / après un lien organisationnel hyper-lié).Un lien organisationnel sera supprimé s'il est au format
[[LINK][DESCRIPTION]]
ou[[LINK]]
dans unorg-mode
tampon; sinon rien ne se passera.Pour des raisons de sécurité, le LIEN rejeté de org-link est enregistré
kill-ring
dans le cas où un besoin surviendrait d'utiliser ce lien ailleurs.la source
Le plus rapide peut être de placer le curseur avant le lien, puis de taper
C-M-space
(mark-sexp
), qui marquera tout le lien. Ensuite, supprimez-le en tapant un retour arrière (si vous utilisezdelete-selection-mode
) ouC-w
.la source
Il existe une solution qui évite d'utiliser une analyse personnalisée avec des expressions rationnelles et utilise directement l'
org-element
API intégrée :la source
Cette macro très rapide et très sale serait une façon, pas la meilleure:
la source