Como copiar links para fora do modo organizacional?
16
Há muita documentação sobre a inserção ou armazenamento de links de modo organizacional, mas aparentemente não há como copiá-los para buffers em outros formatos.
Como você copia o URL de um link do modo organizacional de um arquivo organizacional para o clipboard / kill ring com o menor número de pressionamentos de tecla possível? Eu tentei org-store-linke org-insert-link, mas despeja toda a sintaxe do modo organizacional em qualquer outro buffer que você abra.
Exemplo: buffer 1 org-mode, buffer 2 Markdown.
Visite o buffer 1, C-sprocure o link.
Magia acontece , URL está na área de transferência
Visite o buffer 2. C-ypara puxar o URL para o buffer.
Aqui está uma maneira de alcançar o que você deseja, usando propriedades de texto.
Você pode ir para o link no arquivo organizacional que deseja copiar e executar o comando,
my-org-retrieve-url-from-pointque copiará o link organizacional no ponto atual da área de transferência. Antes de adicionar o link à área de transferência, my-yank-org-linké registrado um manipulador de puxões ( ), chamado ao colar o link. O manipulador de arranque verifica se o buffer atual está no modo organizacional ou um modo derivado do modo organizacional; nesse caso, ele insere o link como está (um link organizacional); caso contrário, extrai o URL do link e o insere.
(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))))
Aqui está uma versão DWIM de kill-ring-save, que usa kill-ring-savese a região está ativa ou copia o link orgânico no ponto
Eu removi o if, porque ao usar a GUI Emacs sempre copiado todo o link ( [[a]][b]]) em vez da parte URL ( a)
Nitz
2
Outra possibilidade: com o cursor no link, execute org-insert-link. Isto é normalmente C-c C-l. Com o modo maligno (ou talvez apenas com Spacemacs) , i ltambém funciona. Isso entra no fluxo de inserção do link com o valor do link pré-preenchido. Você pode fazer M-x evil-yank-lineenquanto o minibuffer possui o conteúdo do endereço do link.
Este método é basicamente o que eu uso, especificamente eu vou C-c C-l M-S-<backspace> C-g.
Omar
Funciona, mas não é tão eficiente.
itirazimvar 8/09/19
2
Atrasado para a festa (e meu primeiro post aqui, a propósito), mas acho que isso pode ser útil para outras pessoas também. A resposta aceita funciona perfeitamente ao puxar o emacs novamente, mas o texto real copiado para a área de transferência do sistema ainda é a sintaxe completa do modo organizacional. Eu queria algo que pudesse copiar um link do org-mode e do emacs. Casos de uso: venho desenvolvendo muitos desenvolvedores da Web ultimamente e frequentemente uso vários navegadores. Apenas um deles pode ser o padrão para o C-c c-oatalho e, às vezes, desejo abrir um link em um não padrão. Além disso, colando links para colegas de trabalho no Slack, etc.
Para encurtar a história, criei esta solução misturando e combinando a resposta aceita :
Isso copiará para a área de transferência o link apenas parte de um link de modo organizacional.
De fato, integrei a solução da resposta anterior e essa nova função dentro da minha .emacs, cada uma com sua própria combinação de teclas. Código completo aqui:
Eu escolhi as combinações de teclas C-c ee C-c cporque são boas mnemônicas para export e copy e não são usadas no modo organizacional. De alguma forma, eles também se encaixam na vinculação C-c C-ode teclas já existente para olinks com caneta.
if
, porque ao usar a GUI Emacs sempre copiado todo o link ([[a]][b]]
) em vez da parte URL (a
)Outra possibilidade: com o cursor no link, execute
org-insert-link
. Isto é normalmenteC-c C-l
. Com o modo maligno (ou talvez apenas com Spacemacs), i l
também funciona. Isso entra no fluxo de inserção do link com o valor do link pré-preenchido. Você pode fazerM-x evil-yank-line
enquanto o minibuffer possui o conteúdo do endereço do link.fonte
C-c C-l M-S-<backspace> C-g
.Atrasado para a festa (e meu primeiro post aqui, a propósito), mas acho que isso pode ser útil para outras pessoas também. A resposta aceita funciona perfeitamente ao puxar o emacs novamente, mas o texto real copiado para a área de transferência do sistema ainda é a sintaxe completa do modo organizacional. Eu queria algo que pudesse copiar um link do org-mode e do emacs. Casos de uso: venho desenvolvendo muitos desenvolvedores da Web ultimamente e frequentemente uso vários navegadores. Apenas um deles pode ser o padrão para o
C-c c-o
atalho e, às vezes, desejo abrir um link em um não padrão. Além disso, colando links para colegas de trabalho no Slack, etc.Para encurtar a história, criei esta solução misturando e combinando a resposta aceita :
Isso copiará para a área de transferência o link apenas parte de um link de modo organizacional.
De fato, integrei a solução da resposta anterior e essa nova função dentro da minha
.emacs
, cada uma com sua própria combinação de teclas. Código completo aqui:Eu escolhi as combinações de teclas
C-c e
eC-c c
porque são boas mnemônicas parae
xport ec
opy e não são usadas no modo organizacional. De alguma forma, eles também se encaixam na vinculaçãoC-c C-o
de teclas já existente parao
links com caneta.fonte