Istnieje wiele dokumentacji na temat wstawiania lub przechowywania linków w trybie org, ale najwyraźniej nie ma ich na temat kopiowania ich do buforów w innych formatach.
Jak skopiować adres URL linku trybu org z pliku org do schowka / pierścienia zabijania za pomocą jak najmniejszej liczby naciśnięć klawiszy? Próbowałem org-store-linki org-insert-link, ale zrzuca całą składnię trybu org do dowolnego innego bufora, który masz otwarty.
Przykład: bufor 1 tryb org, bufor 2 Markdown.
Odwiedź bufor 1, C-swyszukaj link.
Magia się dzieje , URL jest w schowku
Przejdź do bufora 2., C-yaby przeciągnąć URL do bufora.
Oto jeden ze sposobów osiągnięcia tego, co chcesz, za pomocą właściwości tekstu.
Możesz przejść do łącza w pliku org, który chcesz skopiować, i wykonać polecenie,
my-org-retrieve-url-from-pointktóre skopiuje łącze org w bieżącym punkcie do schowka. Przed dodaniem łącza do schowka my-yank-org-linkrejestrowany jest moduł yank-handler ( ), który jest wywoływany podczas wklejania łącza. Moduł obsługi yank sprawdza, czy bieżący bufor znajduje się w trybie org, czy w trybie pochodnym z trybu org, jeśli tak, wstawia link taki, jaki jest (link org), w przeciwnym razie wyodrębnia adres URL z linku i wstawia go
(defun my-yank-org-link (text)
(if (derived-mode-p 'org-mode)
(insert text)
(string-match org-bracket-link-regexp text)
(insert (substring text (match-beginning 1) (match-end 1)))))
(defun my-org-retrieve-url-from-point ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
;; org-context seems to return nil if the current element
;; starts at buffer-start or ends at buffer-end
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(add-text-properties 0 (length text) '(yank-handler (my-yank-org-link)) text)
(kill-new text))))
Oto wersja DWIM kill-ring-save, która używa, kill-ring-savejeśli region jest aktywny lub kopiuje łącze org w punkcie
Usunąłem if, ponieważ podczas korzystania z GUI Emacs zawsze kopiował cały link ( [[a]][b]]) zamiast części URL ( a)
Nitz 1'15
3
Inna możliwość: z kursorem na łączu uruchom org-insert-link. Tak jest normalnie C-c C-l. Z trybem zła (a może tylko z Spacemacs) , i ldziała również. Wprowadza to przepływ wstawiania łącza ze wstępnie wypełnioną wartością łącza. Możesz to zrobić, M-x evil-yank-linegdy minibufor ma zawartość adresu łącza.
Ta metoda jest w zasadzie tym, czego używam, a konkretnie idę C-c C-l M-S-<backspace> C-g.
Omar
Działa, ale nie tak wydajnie.
itirazimvar
2
Późno na imprezę (a przy okazji mój pierwszy post tutaj), ale myślę, że może to być przydatne również dla innych. Akceptowana odpowiedź działa idealnie, gdy ponownie szarpniesz wewnątrz emacsa, ale tekst skopiowany do schowka systemowego jest nadal pełną składnią trybu org. Chciałem czegoś, co mogłoby skopiować link zarówno z trybu org, jak i emacsa. Przypadki użycia: Ostatnio robiłem dużo web dev i często używam wielu przeglądarek. Tylko jeden z nich może być domyślnym C-c c-oskrótem, a czasami chcę otworzyć link w innym niż domyślny. Wklejanie linków do współpracowników na Slacku i tak dalej.
Krótko mówiąc, wymyśliłem to rozwiązanie, mieszając i dopasowując przyjętą odpowiedź :
Spowoduje to skopiowanie do schowka łącza tylko części łącza w trybie organizacji.
W rzeczywistości zintegrowałem w sobie zarówno rozwiązanie z poprzedniej odpowiedzi, jak i tę nową funkcję .emacs, każde z własnym skrótem klawiszowym. Pełny kod tutaj:
Wybrałem skróty klawiszowe C-c ei, C-c cponieważ są dobrym mnemonikiem dla export i copy i nie są używane w trybie org. W jakiś sposób pasują również do już istniejącego skrótu klawiszowego C-c C-odla olinków pening.
if
, ponieważ podczas korzystania z GUI Emacs zawsze kopiował cały link ([[a]][b]]
) zamiast części URL (a
)Inna możliwość: z kursorem na łączu uruchom
org-insert-link
. Tak jest normalnieC-c C-l
. Z trybem zła (a może tylko z Spacemacs), i l
działa również. Wprowadza to przepływ wstawiania łącza ze wstępnie wypełnioną wartością łącza. Możesz to zrobić,M-x evil-yank-line
gdy minibufor ma zawartość adresu łącza.źródło
C-c C-l M-S-<backspace> C-g
.Późno na imprezę (a przy okazji mój pierwszy post tutaj), ale myślę, że może to być przydatne również dla innych. Akceptowana odpowiedź działa idealnie, gdy ponownie szarpniesz wewnątrz emacsa, ale tekst skopiowany do schowka systemowego jest nadal pełną składnią trybu org. Chciałem czegoś, co mogłoby skopiować link zarówno z trybu org, jak i emacsa. Przypadki użycia: Ostatnio robiłem dużo web dev i często używam wielu przeglądarek. Tylko jeden z nich może być domyślnym
C-c c-o
skrótem, a czasami chcę otworzyć link w innym niż domyślny. Wklejanie linków do współpracowników na Slacku i tak dalej.Krótko mówiąc, wymyśliłem to rozwiązanie, mieszając i dopasowując przyjętą odpowiedź :
Spowoduje to skopiowanie do schowka łącza tylko części łącza w trybie organizacji.
W rzeczywistości zintegrowałem w sobie zarówno rozwiązanie z poprzedniej odpowiedzi, jak i tę nową funkcję
.emacs
, każde z własnym skrótem klawiszowym. Pełny kod tutaj:Wybrałem skróty klawiszowe
C-c e
i,C-c c
ponieważ są dobrym mnemonikiem dlae
xport ic
opy i nie są używane w trybie org. W jakiś sposób pasują również do już istniejącego skrótu klawiszowegoC-c C-o
dlao
linków pening.źródło