Ich arbeite mit einigen DokuWiki -ähnliche Dateien. Die Dateien haben zugehörige PNG-Dateien im selben Verzeichnis. Sie werden in der folgenden Syntax referenziert:
{{ Dateiname .png}}
Ich möchte ein Makro schreiben, das die nehmen würde Dateiname .png
und idealerweise den Pfad der Datei, die bearbeitet wird, und übergeben Sie diese Parameter an xdg-open
.
Am nächsten habe ich es bisher geschafft:
:'<,'>!sed s/\{\\\|\}//g|xargs xdg-open
Das ist grob, verwischt die aktuelle Zeile, erfordert, dass ich mich im Pfad der Datei befinde und verlangt, dass der visuelle Modus verwendet wird, um den Text hervorzuheben .... aber es funktioniert.
Ich habe Probleme, eine Dokumentation zu finden, mit der ich die aktuelle Zeile sicher nach dem Dateinamen durchsuchen und dann den Pfad der aktuellen Datei und den Zieldateinamen an übergeben kann xdg-open
in der vim-Befehlszeile.
Wenn Sie fertig sind, kann ich das Makro idealerweise starten, um die eingebettete Datei anzuzeigen.
Nach der Antwort von G-Man und einigen Fummeln funktioniert das Folgende gut:
:.w !sed -e 's|.*{{|%{{|' -e 's|[^/]*{{||' -e 's/^/"/' -e 's/}}.*/"/' | xargs xdg-open
Dies fügt ein doppeltes Anführungszeichen ein ( "
) Zeichen am Anfang und Ende
des Pfads / Dateinamens, unterstützt also Namen, die Leerzeichen enthalten,
Apostrophe (einfache Anführungszeichen) und einige andere Sonderzeichen.