Office & BusinessSoftwareWindows

HTML-Hyperlinks aus Textauswahl in Notepad++ erstellen

Notepad++ kann so ziemlich alles, ein essenzielles Feature fehlt allerdings - Text markieren und verlinken, Standard bei jedem noch so simplen Webeditor. Schreibt man Online-Text offline mit Notepad++ - so entsteht just auch dieser Text - ist das wirklich ärgerlich. Oder wollt Ihr jedesmal den ganzen a-href-Tag tippen? Unsere hauseigene Lösung: UrlZen. Ursprünglich für Kollege Boris entwickelt, soll dieses Tool nun Euch helfen - der olle Verräter ist ja lieber auf Mac umgestiegen und ein Tool mit nur einem einzigen Nutzer ist doch etwas traurig ...

Update 25.06.2021: Sechs Jahre sind lang ... Das hier vorgestellte Skript sollte noch funktionieren, muss aber nicht. Mittlerweile haben wir eine schlankere und einfachere Lösung.

Zunächst das Gute: Einmal eingerichtet, könnt Ihr in Notepad++ Text markieren und dann ganz einfach über das Kontextmenü einen Dialog aufrufen und Links samt Titel erstellen - Demo-Video unten. Das Schlechte: Es ist ein wenig Einrichtungsaufwand. In Kürze: Zunächst wird ein Notepad++-Add-on installiert, das Nutzer-Skripte verwaltet, dann das Skript erstellt (das fertitge UrlZen) und ins Kontextmenü eingefügt. Zudem müssen einige Tools installiert werden (die allerdings sowieso jeder Windows-Nutzer haben sollte!).

1. Abhängigkeiten installieren

Unser UrlZen-Skript arbeitet mit Linux-Kommandozeilenwerkzeugen, die natürlich zunächst unter Windows nachinstalliert werden müssen. Das ist zum einen das Paket GnuWin, dass die meisten Linux-Standard-Tools als native Windows-Programme bereitstellt. Ihr müsst die ganzen EXE-Dateien einfach in ein Verzeichnis kopieren. Damit Windows auf die Programme findet, müssen Sie irgendwo im Windows-Pfad liegen. Ihr könnt die Dateien wahlweise in einen Ordner aus der Pfad-Variablen legen (etwa /Windows/System32) oder einen extra Ordner dem PATH hinzufügen, was über Systemsteuerung/System/Erweiterte Systemeinstellungen/Umgebungsvariablen geht. Anschließend könnt Ihr in der Eingabeaufforderung beispielsweise Linux-Kommandos wie mkdir zum Erstellen von Ordnern oder ls (statt dir) zum Auflisten von Ordnerinhalten nutzen. Zweitens benötigt Ihr Zenity, ein simples Tool, das Fenster für Nutzereingaben (hier URL und Titel) erzeugt.

urlzen
Linux-Werkzeuge für Windows - eine massive Aufwertung!

2. Pork to Sausage installieren

Pork to Sausage ist ein Notepad++-Add-on, das markierten Text in vom Nutzer festzulegender Weise verarbeitet - ein sehr, sehr allgemein gehaltenes Add-on, dass allein noch gar nichts kann. Installiert einfach über den Plug-in-Manager, zu finden im Menü "Erweiterungen".

urlzen
Pork to Sausage fungiert als Vermittler zwischen Nutzerskript und Notepad++.

3. Pork to Sausage konfigurieren

Jetzt muss Pork to Sausage mitgeteilt werden, was es tun soll: Über Erweiterungen/Pork to Sausage/Edit User Commands öffnet Ihr die Datei pork2sausage.ini und gebt folgenden Text ein: [urlzen] progPath=C:\projekte\urlzen.bat progCmd=urlzen.bat $(SELECTION) workDir=C:\projekte Die urlzen.bat gibt es natürlich noch nicht, die wird später erstellt; hauptsache, Pfad und Name der bat-Datei stimmen. Da das Arbeitsverzeichnis (workDir) schreibbar sein muss, sollte es nicht in Systemordnern liegen - c: \urlzen oder etwas in der Art wäre ratsam.

urlzen
Pork to Sausage benötigt nur wenige Infos, um ein Nutzerskript einsetzen zu können.

4. Kontextmenü einrichten

Weiter geht es über Einstellungen/Kontextmenü anpassen. Auch jetzt wird wieder eine Textdatei geöffnet, nämlich die contextMenu.xml. Hier kommt folgender Text unten in die Liste mit item-Einträgen:

Item FolderName="Plugin commands" PluginEntryName="Pork to Sausage" PluginCommandItemName="urlzen" ItemNameAs="Zenity mir den Link" /

Wichtig: Die Zeile muss in spitze Klammern - leider weigert sich Wordpress das korrekt auszugeben ... Den urlzen-Eintrag könnt Ihr natürlich ändern, er muss aber dem Namen aus der ersten Zeile des letzten Schritts entsprechen. "Zenity mir den Link" ist der Text, der im Kontextmenü erscheint - beliebig änderbar.

urlzen
Die Konfiguration des Kontextmenüs von Notepad++.

5. Das Skript UrlZen

Jetzt kommt die eigentliche Magie, da Skript zum verarbeiten des markierten Texts - Ihr könnt das natürlich beliebig anpassen oder einfach die fertige BAT-Datei herunterladen:

@echo off

REM Code by Mirco Lang (www.tutonaut.de) - too trivial to be licensed. REM makes use of help files z1 and z2, so Pork to Sausage working directory must be writeble

printf %* > z1 printf \t >> z1 zenity --entry --entry-text=www.tutonaut.de --text=URL eingeben >> z1 printf \t >> z1 zenity --entry --entry-text="Der Tutonaut" --text=Titel eingeben >> z1 printf \t >> z1 cat z1 | tr -d \n\r > z2 cat z2 | gawk -F\t {"print \""< "a href=\"; print $2; print \" target=blank \"; print \"title=\"; print \"\47\"; print $3; print \"\47\"; print \"">"\"; print $1; print \""DOOF"\""} | tr -d "\r\n" | sed "s/\"//g"

Wichtig: statt DOOF muss in der letzten Zeile natürlich der Schluss des a-Tags stehen, also SPITZE-KLAMMER-AUF SLASH A SPITZE-KLAMMER-ZU - das will Wordpress aber partout nicht drucken ... Daher auch das das Ergebnis nur als Bild:

Der code-Tag von Wordpress ist echt scheisse, daher nur als Bild, sorry.
Der code-Tag von Wordpress ist echt scheisse, daher nur als Bild, sorry.

Wenn Ihr hier mit Copy&Paste arbeitet seid bitte vorsichtig - ein einziges verändertes Zeichen macht alles kaputt! Ladet lieber das ZIP runter und bearbeitet die BAT-Datei. Eine Erklärung in Kürze: Zunächst wird zweimal Zenity aufgerufen, das heißt, es poppen nacheinander zwei Fenster auf, in die Ihr erst die URL, dann den Titel eingebt - die Tutonaut-Voreinstellungen könnt Ihr natürlich einfach überschreiben, sie spielen aber keine Rolle. Beide Werte werden in die Hilfsdatei z1 geschrieben (daher muss auch das Verzeichnis wie erwähnt beschreibbar sein) und anschließend bereinigt in die Hilfsdatei z2. Die letzte, lange Zeile ab "cat z2" erstellt nun den fertigen HTML-Quelltext für Webseiten, Blogs etc. Das Konzept ist recht simpel: Die beiden Teile Link und Titel landen in den Variablen $2 und $3, der HTML-Code wird darum herum gebaut ($1 ist der markierte Text). Und der ganze sed- und tr-Kram sorgt für die richtigen Sonderzeichen und Formatierungen. Wenn Ihr genau wissen wollt, wie sed, tr, gawk & Co. arbeiten, schaut in meinen Artikel Zeichenjongleur in der c't 22/14.

6. UrlZen einsetzen

Wenn Ihr den fertigen UrlZen-Code nehmt, hält sich der Aufwand in Grenzen und das Ergenis ist zumindest sehr praktikabel: Markiert Text und ruft das Skript über das Kontextmenü und dann Plugin "commands/Zenity mir den Link" auf und füllt die beiden Textboxen aus. Als Bild:

urlzen
Das Skript im Einsatz: Markieren, starten, URL/Titel eingeben.

Und in Action:

Tipp: Wenn Ihr Umlaute im Titel benutzt, muss die Codierung von Notepad++ auf ANSI stehen, bei UTF8 werden ansonsten Steuerzeichen ausgegeben.

Eine Bemerkung zum Schluss: Ich nutze UrlZen seit rund einem halben Jahr und alles läuft rund - aber ich bin kein Programmierer. Soll heißen, wenn die Scripting-Götter unter Euch vom Code entsetzt sind, schimpft ruhig, aber seid freundlich. Noch besser - verbessern! Und allen anderen sei gesagt: UrlZen funktioniert auf drei Systemen einwandfrei, wenn bei Euch was nicht klappt, fragt einfach - und kontrolliert vorher, ob die eingesetzen Tools (Pork to Sausage, Zenity, GnuWin (printf, cat, tr, gawk, sed)) laufen. Die GnuWin-Tools könnt Ihr einfach testen, indem Ihr eine Eingabeaufforderung öffnet und beispielsweise sed eingebt - dann sollte eine Hilfe-Meldung erscheinen. Wird das Programm nicht gefunden, gibt es vermutlich ein Problem mit dem Windows-Pfad. Und nun viel Spaß beim Verlinken!

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

7 Kommentare

  1. Hi Mirco, danke erst einmal für das ausführliche Tutorial … aber ich bekomme es partout nicht ans Laufen: Wo muss Zenity hingelegt werden? (Der Link im Artikel ist offline, habe aber den Ordner von Gnome.org geholt.) Ich habe es im selben Ordner wie das Script, aber ich bekomme statt Dialog-Boxen nur eine Fehlermeldung mit japanischen(?) Schriftzeichen. Datei z1 wird auch erfolgreich angelegt, bleibt aber leer. Hat sich im Script vielleicht was geändert oder geht es nun nach sechs Jahren einfach nicht mehr? Beste Grüße Karo

    1. Wenn ich mich recht entsinne, musste Zenity auch einfach irgendwo im Windows-Pfad vertreten sein – im Zweifelsfalls einfach im selben Ordner wie die EXE-Dateien aus dem GnuWIN-Paket. Ist aber tatsächlich lange her und hier so nicht mehr im Einsatz.

      Da ich die Funktion aber wieder mal brauchte, habe ich mir erst vor ein paar Wochen eine etwas simplere Variante zusammengebaut und die funktioniert hier tagtäglich: https://www.tutonaut.de/notepad-html-hyperlinks-aus-auswahl-erstellen-jetzt-einfach/

  2. Also gut, altes Thema. Aber ich dachte wirklich für einen Moment, hier könnte ich endlich eine Lösung für das alte Problem finden. Ist aber leider schon im Ansatz nicht zu gebrauchen. Der wirkliche Krampf sind doch nicht die paar Buchstaben a href=…, sondern interne Links, die man mit ../../verzeichnis/nochnverzeichnis/datei.htm“ zusammensetzen muß, was sowohl extrem mühselig als auch extrem fehlerträchtig ist. Eine wirkliche Lösung für Links muß einen Filebrowser beinhalten, der dann relative Links erzeugt.

  3. Hallo,

    eine noch kompliziertere Lösung ist dir nicht eingefallen? Mal davon abgesehen, dass ich Lösungen, für die ich erst eine Stunde lang 98 andere „Tools“ installieren muss, sowieso für fragwürdig erachte – wer gern oder lieber Linux-Tools benutzt, soll’s halt gleich konsequent tun.

    Womit ich auch schon beim Thema wäre: Es ist entschieden weniger Aufwand und geht noch dazu erheblich schneller, den PC mit einer Linux-Live-CD zu starten – oder wenn man denn in Windows bleiben will, einfach eine virtuelle Linux-Maschine hochzufahren – und da das ganze mit einem simplen 2-Zeiler in der Shell zu lösen.

    Viele Grüße

    Eberhard

    1. Hallo Eberhart, vielen Dank für Deine interessante Antwort – Kollege Lang ist Opensource-Dogmatiker, kann aber nicht auf Windows verzichten. Das dürfte die Ursache für die komplex erscheinende Variante sein. Hast Du eventuell den Terminal-Befehl für uns, den Du unter Linux verwendest?

    2. Doch doch, keine Sorge, mir ist eine kompliziertere Lösung eingefallen, die habe ich aber wieder verworfen. Du hast aber den Sinn des ganzen völlig missverstanden: Es geht nicht darum irgendwelche Linux-Tools zu nutzen, sondern Notepad++ – und wenn Du für die Aufgabenstellung eine einfachere Lösung für Notepad++ hast, immer her damit. Zudem: Ja, die Einrichtung ist aufwändig – einmalig. Das fertige Tool nutze ich aber ständig – über Jahre. Die Entwicklung von Word hat auch Jahre (Jahrzehnte …) gedauert, völlig übertriebener Aufwand für einen Brief – aber OK, für zig Millionen Menschen, die Milliarden von Briefen damit schreiben.

      Und was Deine 2-Zeilen angeht:Ja, es ginge kürzer – aber es sollte ja eine Lösung sein, die, einmal installiert, einfach und mit grafischer Oberfläche funktioniert. Und warum? Weil man Menschen in der Regel nicht zumuten darf, auch nur eine Zeile Code selbst zu schreiben. Ja, es ginge dennoch noch kürzer – aber ich entwickel hier ja keine Software, sondern löse kleine Probleme.

      Aber das alles geht am wesentlichen vorbei: Das Problem: Markierungen in Notepad++ als Hyperlink setzen. Die Lösung: Hier kannst Du gerne einspringen! Wie geht es denn einfacher?

      Und was Kollege Rentrop angeht: Ja, ich bin ein Open-Source-Dogmatiker, der nicht auf Windows verzichten kann – aber hier geht es ausnahmsweise mal nicht um „Wie geht das mit Open Source?“, sondern nur um „Wie geht das einfach – aber eben mit Notepad++?“.

    3. Und noch was: „Linux-Tools“ grundsätzlich nicht unter Windows zu nutzen, weil man dann ja gleich Linux nehmen könnte/sollte, ist natürlich hanebüchen. Als Idealist sage ich: Ja, tolle Idee. Als Realist: Otto Normalverbraucher – und jeder der Zocken will – kommt um Windows nicht/kaum/schwerlich herum, sollte sich aber dennoch nicht genötigt fühlen, auf Tools zu verzichten, nur weil sie unter Linux Standard sind. Zumal das im Umkehrschluss das komplette Wine-Projekt zu einem Haufen Mist deklarieren würde. Gute Tools sind gute Tools und die nutze ich wo ich will und kann – genau darum gibt es ja eine Trennung von Betriebssystem und Anwendungssoftware. Wer alles aus einer Hand will und alles andere nur missträuisch beäugt und für böse hält, kann sich ja in der Apple-Sekte verdingen … PC per Live-CD starten um einen Link zu setzen – ja, einverstanden, es gibt tatsächlich kompliziertere „Lösungen“, nicht für dieses Problem, aber dafür vielleicht für irgendein anderes.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"