Zunächst basiert Firefox die Einstellungen in "Choose Helper Application" auf den Systemeinstellungen, so dass es keine einfache Möglichkeit gibt, dies zu konfigurieren.
Noch besser ist es, die Firefox-Erweiterung "Open With" zu verwenden: https://addons.mozilla.org/en-US/firefox/addon/open-with/
Es heißt, es sei für Webbrowser, aber es könnte sich um ein beliebiges Programm handeln - es ruft nur das Programm mit der URL als erstes Argument auf.
Als nächstes habe ich ein Python-Skript geschrieben:
import sys, os, re, tempfile, urllib, urlparse, time
handler, url = sys.argv[1:3]
match = re.match(r".*(\.[A-Za-z_]+)$", urlparse.urlparse(url).path)
tmpfile, tmpfile_path = tempfile.mkstemp(suffix=match.group(1) if match else '')
os.close(tmpfile)
print "Downloading to temp file ..."
urllib.urlretrieve(url, tmpfile_path)
#Normally it would try to clean up the file we urlretrieved after this Python
#process ends. Thank BDFL there are no access restrictions on private variables.
urllib._urlopener._URLopener__tempfiles = []
os.execlp(handler, handler, '%s' % tmpfile_path)
#We don't attempt to delete the temporary file because:
# 1. Firefox also doesn't in such cases.
# 2. It's problematic in some instances, such as when the subprocess (this
# script used to call the handler in a subprocess) finds another copy
# of itself running, hands the file over to it and exits. Meanwhile, we
# would be over here deleting the file while the subprocess'es brother
# hadn't tried to open it yet.
Was es macht:
Erstellt einen eindeutigen Dateinamen im Temp-Verzeichnis des Benutzers (derselbe Ort, an dem Firefox in solchen Fällen Dateien speichert).
Stellt sicher, dass die Erweiterung der temporären Datei auch bei einer URL mit Abfragezeichenfolgen und Hash-Ankern sinnvoll ist ( urlretrieve(..)
ohne ein zweites Argument wird die erstere behandelt, aber nicht die letztere). Dies ist nützlich, da es Vim mitteilt, wie die Datei syntaktisch hervorgehoben werden soll.
Lädt die Datei von der URL in das Temp
Verzeichnis des aktuellen Benutzers herunter .
Öffnet die Datei mit gvim.exe
(oder einem Editor Ihrer Wahl - siehe unten).
So verwenden Sie diese Lösung:
Speichern Sie das obige Python-Skript an einem open_with.py
Ort, an dem Sie solche Skripte aufbewahren.
Installieren Sie die Open With Firefox-Erweiterung unter dem obigen Link und starten Sie Firefox neu.
Gehe zu Tools > Add-ons > Extensions > Open With > Options
. Dort:
(ein). (Sofern Sie Open With nicht für den vorgesehenen Zweck verwenden möchten, "verstecken" Sie alle Browser in der Liste.)
(b). "Hinzufügen ..." python.exe
.
(c). Setzen Sie die "Argumente ..." auf den Pfad des Skripts, gefolgt vom ausführbaren Dateinamen oder Pfad des Editors. Für mich wäre das
C:\E\infrastructure\open_with.py gvim.exe
(d). "Umbenennen ..." in "gVim".
Stellen Sie sicher, dass gvim.exe
sich das in der PATH-Variablen befindet. Ich empfehle das EditPATH-Autohotkey-Skript , das mit AHK-Tools auf eine EXE- Datei kompiliert werden kann. (Platzieren Sie es Quick Launch
zur Vereinfachung in den Ordner. Das Bearbeiten von PATH wird zu drei Klicks, anstatt den Speichertest der Systemsteuerung erneut durchführen zu müssen.) Andernfalls müssen Sie es ausführen Geben Sie den gesamten Pfad von gvim.exe
Schritt 3 (c) an.
Das ist es. Suchen Sie nun in Firefox einen Link zu einer Datei, klicken Sie mit der rechten Maustaste darauf und wählen Sie "Link mit gVim öffnen".
(Ratet mal, wie ich dort das richtige Symbol gefunden habe :)
Bonus: Wenn Sie die entsprechende Einstellung in den Optionen der Erweiterung " Öffnen mit " festlegen , können Sie mit der rechten Maustaste auf eine Firefox-Registerkarte klicken und (die meisten) Webseiten auch in Vim öffnen - dh wie "Quelltext anzeigen", außer mit Vim.
Beachten Sie, dass diese Lösung auch für Emacs, Notepad ++ und viele andere Programme gilt, die nicht auf Texteditoren beschränkt sind. Zum Beispiel habe ich es gerade mit The GIMP versucht und es öffnete eine PNG-Datei. (Ersetzen Sie dazu den gvim.exe
obigen Pfad durch den Pfad zu GIMP. Hinweis: Wenn Sie ein beliebiges Bild auf diese Weise und nicht nur einen Link öffnen möchten, können Sie das Bild anzeigen und dann mit der rechten Maustaste auf dessen Registerkarte klicken.)
Historischer Hinweis: Anfangs habe ich versucht, ein BAT-Skript zu schreiben, aber das wurde unhaltbar, nachdem es in diesem Testfall fehlgeschlagen war: http://evgeni.org/w/api.php?format=xml&action=query&titles=AutoHotkey_shortcuts&prop=revisions&rvprop=content
That weil cmd.exe
es Probleme mit Argumenten gibt, die das =
Zeichen enthalten. Darüber hinaus ging es nicht nur darum, gvim.exe
die URL als Befehlszeilenargument aufzurufen (obwohl Vim URLs akzeptiert), da dieser Testfall nicht verarbeitet werden kann. Es wird lediglich eine leere Instanz von Vim geöffnet. Und um die URL zu analysieren, müsste ich auf Powershell zurückgreifen, was die Portabilität der Lösung etwas einschränkt. Am Ende entschied ich, dass eine Installation von Python nicht allzu viel verlangt.