Fungsi elisp berikut akan mengambil tautan di sekitar titik saat ini seperti yang dikenali oleh org-bracket-link-regexp
, jadi salah satu [[Link][Description]]
atau [[Link]]
, dan menggantinya dengan Description
dalam kasus pertama atau Link
dalam kasus kedua.
(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]]
tautan format org juga. Saya belajar tentangmatch-beginning
danmatch-end
dari jawaban Anda.Saya mencoba menambahkan ini ke jawaban dari @Andrew, tapi itu terlalu lama untuk komentar ...
Saya sangat menyukai solusinya, kecuali bahwa itu memindahkan kursor. (Secara teknis saya kira itu memindahkan intinya. Lagi pula ...) Untungnya, mudah untuk menambahkan
save-excursion
untuk menghindari itu:sumber
Panggil perintah ini ketika titik di mana saja setelah
[[
tanda kurung pertama dari tautan-org (atau di mana saja di / setelah tautan-tautan-hyper-link).Tautan org akan dihapus jika formatnya
[[LINK][DESCRIPTION]]
atau[[LINK]]
dalamorg-mode
buffer; kalau tidak, tidak akan terjadi apa-apa.Demi keamanan, LINK yang dibuang dari tautan-org disimpan ke
kill-ring
jika diperlukan untuk menggunakan tautan itu di tempat lain.sumber
Cara tercepat adalah menempatkan kursor di depan tautan, lalu ketik
C-M-space
(mark-sexp
), yang akan menandai seluruh tautan. Kemudian hapus dengan mengetikkan backspace (jika Anda gunakandelete-selection-mode
) atauC-w
.sumber
Ada solusi yang menghindari penggunaan penguraian khusus dengan regex dan langsung menggunakan
org-element
API bawaan:sumber
Makro yang sangat cepat dan sangat kotor ini akan menjadi salah satu cara, bukan cara terbaik:
sumber