Tenho uma imagem na área de transferência e quero colá-la no meu documento como texto [](img/image1.png)
.
Em vez de primeiro copiá-lo para esse diretório, quero fazê-lo ppressionando uma única tecla no Vim. Assim, ele conecta p
, verifica se estou editando um arquivo Markdown, salva a imagem da área de transferência no local img/image1.png
e insere [](img/image1.png)
no arquivo.
Isso é possível com o Vim?
Eu uso o macOS e o terminal Vim.
cut-copy-paste
os-clipboard
filetype-markdown
Maxim Kochurov
fonte
fonte
Respostas:
O comando terminal habitual para acessar a área de transferência no Mac é
pbpaste
. No entanto, como isso não funciona para dados de imagem, precisamos recorrer ao AppleScript:Adicione o código acima a
~/.vim/after/ftplugin/markdown.vim
.Isso salva os dados da área de transferência no arquivo "img / image1.png" se ele contiver dados PNG. Em seguida, apenas usa o
:normal!
botão para inserir o link de remarcação desejado.Se a área de transferência não contiver dados PNG (ou se não estivermos em um arquivo Markdown), ela executará um pcomando regular .
Se eu estivesse usando isso, eu o arrumaria para oferecer suporte a outros tipos de imagem e deixar o cursor em uma posição mais útil, mas isso funciona bem como uma prova de conceito.
(Eu também usaria um
<leader>p
mapeamento como sugerido por Karl Yngve Lervåg - isso parece ser a funcionalidade que eu preferiria chamar especificamente - mas não foi isso que você pediu).Leitura adicional
:help :map-<buffer>
:help system()
:help v:shell_error
:help :normal
fonte
A solução a seguir deve funcionar na maioria dos sistemas Linux. Requer uma
xclip
ferramenta relativamente atualizada . Para uma solução que funcione no MacOS / OSX, consulte a resposta de @ Rich .Propus uma solução que mapeia em
<leader>p
vez de remapearp
, pois acho que essa é uma abordagem muito mais saudável. A funçãoSaveFile
inspecionará a área de transferência comxclip
. Se houver um arquivo de imagem, ele será salvoimg/imageN.<ext>
, a menos que o arquivo já exista. Ele também preencherá o*
registro com o[](img/...)
texto e o colará.fonte
xclip
. Você deve tentar executar osxclip
comandos no seu terminal.Com base nas respostas acima, criei um plug - in para o vim resolvendo meu problema no macos e possivelmente no linux. Espero que você ache este plugin útil. Também aprecio quaisquer contribuições e solicitações de recursos.
fonte