Ich habe ein Bild in der Zwischenablage und möchte es als Text in mein Dokument einfügen [](img/image1.png)
.
Anstatt es zuerst in dieses Verzeichnis zu kopieren, möchte ich es mit einem einzigen pTastendruck in Vim tun . Es hakt also p
, prüft, ob ich eine Markdown-Datei bearbeite, speichert das Bild aus der Zwischenablage am Speicherort img/image1.png
und fügt es [](img/image1.png)
in die Datei ein.
Ist das mit Vim möglich?
Ich benutze MacOS und Terminal Vim.
cut-copy-paste
os-clipboard
filetype-markdown
Maxim Kochurov
quelle
quelle
Antworten:
Der übliche Terminalbefehl für den Zugriff auf die Zwischenablage auf dem Mac lautet
pbpaste
. Dies funktioniert jedoch nicht für Bilddaten, daher müssen wir auf AppleScript zurückgreifen:Fügen Sie den obigen Code zu hinzu
~/.vim/after/ftplugin/markdown.vim
.Dadurch werden die Zwischenablagedaten in der Datei "img / image1.png" gespeichert, wenn sie PNG-Daten enthalten. Es wird dann nur das verwendet
:normal!
, um den gewünschten Markdown-Link einzufügen.Wenn die Zwischenablage keine PNG-Daten enthält (oder wenn wir uns nicht in einer Markdown-Datei befinden), führt sie einen regulären pBefehl aus.
Wenn ich dies verwenden würde, würde ich es aufräumen, um weitere Bildtypen zu unterstützen und den Cursor an einer hilfreicheren Position zu belassen, aber dies funktioniert gut als Proof of Concept.
(Ich würde auch ein
<leader>p
Mapping verwenden, wie von Karl Yngve Lervåg vorgeschlagen - dies scheint eine Funktionalität zu sein, die ich lieber speziell aufrufen würde - aber das haben Sie nicht verlangt).Weiterführende Literatur
:help :map-<buffer>
:help system()
:help v:shell_error
:help :normal
quelle
Die folgende Lösung sollte auf den meisten Linux-Systemen funktionieren. Es erfordert ein relativ aktualisiertes
xclip
Tool. Eine Lösung für MacOS / OSX finden Sie in der Antwort von @ Rich .Ich habe eine Lösung vorgeschlagen, die Karten
<leader>p
anstelle von Neuzuordnungen enthältp
, da ich dies für einen viel vernünftigeren Ansatz halte. Die FunktionSaveFile
überprüft die Zwischenablage mitxclip
. Wenn eine Bilddatei vorhanden ist, wird diese gespeichertimg/imageN.<ext>
, sofern die Datei nicht bereits vorhanden ist. Außerdem wird das*
Register mit dem[](img/...)
Text gefüllt und anschließend eingefügt.quelle
xclip
. Sie sollten versuchen, diexclip
Befehle in Ihrem Terminal auszuführen.Basierend auf den obigen Antworten habe ich ein Plugin für vim erstellt, um mein Problem für Macos und möglicherweise für Linux zu lösen. Ich hoffe, Sie finden dieses Plugin hilfreich. Ich freue mich auch über Beiträge und Feature-Anfragen.
quelle