Als Entwickler verwende ich ständig den Dateimanager. Oft möchte ich den Dateimanager erweitern, um einige meiner Aufgaben zu automatisieren. Leider war der Standard-Dateimanager auf den meisten Systemen immer sehr einschränkend.
fman DateimanagerDas fman Dateimanager ist ein Game-Changer. fman ist ein minimalistischer dualer Dateimanager. Es ist wie erweiterbar Erhabener Text mit Python. Es hat alle Tastatureinstellungen als Commander One und ähnliche Dateimanager. Sie können es weiter verwenden Mac OS, Windows, und Linux.
Seit Februar 2017 befindet sich fman noch in einem privaten Beta-Programm, für das jeder Zugriff beantragen kann. Der Autor plant, am 1. März 2017 mit dem Verkauf zu beginnen.
Eine der einzigartigen Funktionen von fman ist die Leistungsfähigkeit. Wenn Sie drücken Befehl-P, fman fordert zur Eingabe eines Verzeichnisnamens auf.
Power Go tofman sucht nach Übereinstimmungen Wenn Sie viele Verzeichnisse mit dem Wort haben fman Sie sehen alle Verzeichnispfade, die dieses Wort enthalten. Dies macht es sehr einfach, das richtige Verzeichnis zu finden.
Wenn Ihnen die Standard-Hotkeys nicht gefallen, können Sie sie im ändern Nutzer Verzeichnis, in dem die Plugins leben. Auf Mac OS Das Plugins-Verzeichnis lautet ~ / Library / Anwendungssupport / fman / Plugins /
.
Unter Windows ist das Plugins-Verzeichnis % APPDATA% \ fman
. Auf einem Linux-System lautet das Plugins-Verzeichnis ~ / .config / fman
.
Das Nutzer
Das Verzeichnis im Plugins-Verzeichnis enthält die Datei Key Bindings.json
. Diese JSON-formatierte Datei enthält Ihre Einstellungen für die Hotkeys. Das Dateiformat ist:
["Keys": ["Down"], "command": "move_cursor_down", "keys": ["Shift + Down"], "command": "move_cursor_down", "args": "toggle_selection" : true, "keys": ["Up"], "command": "move_cursor_up", "keys": ["Shift + Up"], "command": "move_cursor_up", "args": "Toggle_selection": true, "keys": ["Home"], "command": "move_cursor_home", "keys": ["Shift + Home"], "command": "move_cursor_home", "Args": "toggle_selection": true, "keys": ["End"], "command": "move_cursor_end", "keys": ["Shift + End"], "command": "Move_cursor_end", "args": "toggle_selection": true, "keys": ["PgDwn"], "command": "move_cursor_page_down", "keys": ["Shift + PgDown"], "Command": "move_cursor_page_down", "args": "toggle_selection": true, "keys": ["PgUp"], "command": "move_cursor _page_up ", " keys ": [" Shift + PgUp "]," command ":" move_cursor_page_up "," args ": " toggle_selection ": true, " keys ": [" Ins "]," Befehl ":" move_cursor_down "," args ": " toggle_selection ": true, " keys ": [" Leertaste "]," command ":" toggle_selection ", " keys ": [" Backspace "] , "Befehl": "go_up", "Schlüssel": ["Eingabe"], "Befehl": "Öffnen", "Schlüssel": ["Return"], "Befehl": "Öffnen", "Keys": ["F4"], "command": "open_with_editor", "keys": ["Shift + F4"], "command": "open_with_editor", "args": "create_new": true, "keys": ["F5"], "command": "copy", "keys": ["Shift + F6"], "command": "umbenennen", "keys" : [“F6”], “Befehl”: “bewegen”, “Tasten”: [“F7”], “Befehl”: “Create_Verzeichnis”, “Tasten”: [“F8”], “Befehl” : "Move_to_trash", "keys": ["D elete ”],“ command ”:“ move_to_trash ”, “ keys ”: [“ F9 ”],“ command ”:“ open_terminal ”, “ keys ”: [“ F10 ”],“ command ”:“ open_native_file_manager ", " Keys ": [" F11 "]," command ":" copy_paths_to_clipboard ", " keys ": [" Strg + Rechts "]," command ":" open_in_right_pane ", " keys ": ["Strg + Links"], "Befehl": "open_in_left_pane", "keys": ["Cmd + C"], "command": "copy_to_clipboard", "keys": ["Cmd + V" ], "Befehl": "Einfügen", "Tasten": ["Cmd + Alt + V"], "Befehl": "Einfügen_Anschnitt", "Tasten": ["Cmd + A"], "Befehl ":" Select_all ", " keys ": [" Leertaste "]," Befehl ":" move_cursor_down "," args ": " toggle_selection ": true, " keys ": [" Cmd + Backspace " ], "Befehl": "move_to_trash", "keys": ["Cmd +."], "Command": "toggle_hidden_files", "keys": ["F2"], "command": "show_volumes" , "Keys": ["Cmd + P"], "command": "go_to"]
In dieser Datei geben Sie die zu drückende Taste und den Befehl an, den Sie ausführen möchten. Ich verwende diese Datei, um herauszufinden, welche Befehle mit dem Programm geliefert werden.
Die EingabeaufforderungDrücken Sie Umschalt-Befehl-P im fman um die Eingabeaufforderung anzuzeigen, in der ein Befehl ausgeführt werden kann. Die Eingabeaufforderung zeigt alle Hotkey-Zuweisungen für den Befehl an.
Um einen Befehl in der Eingabeaufforderung zu verwenden, geben Sie ein Leerzeichen anstelle eines Unterstrichs ein. Zum Beispiel der Befehl show_volumes
wird durch Eingabe ausgeführt Volumina anzeigen in der Eingabeaufforderung.
Sie können jeden Befehl in einer Erweiterung über die Eingabeaufforderung starten. Diese Funktion ist eine bequeme und leistungsfähige Möglichkeit, Dinge zu erledigen.
Erweiterungen können hinzugefügt werden fman. Von der Erweiterungsseite von fmanKlicken Sie auf eine beliebige Erweiterung, um sie herunterzuladen. Kopieren Sie dann das vollständige Verzeichnis der Erweiterung in das Verzeichnis Plugins Verzeichnis.
fman Mit Statusbar Extender PluginDurch das Herunterladen der Statusleistenerweiterung
Neben der Erweiterung enthält die Statusleiste weitere hilfreiche Informationen zum aktuellen Verzeichnis für jeden Bereich.
Erweiterungen können das Standardverhalten von ändern fman.
Zum Beispiel meine Erweiterung OpenWithEditor
das überschreibt die open_with_editor
eingebauter Befehl.
Der integrierte Befehl öffnet die Datei mit dem Standardprogramm für die Erweiterung. Meine Erweiterung überschreibt diesen Befehl, um eine Datei mit dem in my ausgewählten Editor zu öffnen Bitbar Plugin currentFiles.1h.rb
erstellt im BitBar-Tutorial zu Tuts+.
Um Erweiterungen zu erstellen, erstellen Sie zunächst ein Verzeichnis für die Erweiterung im Plugins-Verzeichnis.
In diesem Lernprogramm möchte ich eine Erweiterung, mit der ich ein Verzeichnis als Projektverzeichnis festlegen und ein Befehlsskript ausführen kann, wenn dieses Verzeichnis aufgerufen wird, wenn ein anderes Projekt als aktuelles Projekt festgelegt ist.
Wenn ich also ein Projektverzeichnis hinterlasse, in dem ich gearbeitet habe, und zu einem anderen Projekt gehe, wird das Skript ausgeführt, um meine Umgebung einzurichten. Ich werde diese Erweiterung am erstellen Mac OS, aber genau dieselbe Erweiterung funktioniert in Windows und Linux mit einigen kleinen Modifikationen.
Erstellen Sie zunächst das Verzeichnis Projektmanager im Plugins-Verzeichnis. Dann erstellen Sie ein anderes Verzeichnis in diesem Verzeichnis Projektmanager. Dieses Verzeichnis muss aus Kleinbuchstaben bestehen und darf keine Leerzeichen enthalten.
Erstellen Sie in diesem Verzeichnis die Datei __init__.py. Sie können auch andere Dateien in dem Verzeichnis haben, das Python-Code enthält. Wenn die Erweiterung geladen wird, wird der Code in dieser Datei zuerst ausgeführt. Es sollte alle anderen Dateien nach Bedarf laden.
Fügen Sie in dieser Datei Folgendes hinzu:
# # Laden Sie die Bibliotheken, die in diesen Befehlen verwendet werden. # from fman import DirectoryPaneCommand, DirectoryPaneListener, show_alert, load_json, DATA_DIRECTORY, show_prompt import os, stat # # Ich verwende zwei globale Variablen, da # sie die Verzeichnisse schneller überprüfen. Ich habe auch einen Alfred-Workflow, der diese Informationen nutzt. # PROJECTDIR = os.path.expanduser ("~") + "/.currentprojectdir" PROJECTSLIST = os.path.expanduser ("~") + "/.projects"
Dieser Code lädt die in dieser Erweiterung verwendeten Bibliotheken. Ich ziehe mehrere Funktionen aus dem fman
Bibliothek. Diese Artikel sind:
Bibliothek oder Funktion | Beschreibung |
---|---|
DirectoryPaneCommand | Dies ist das Objekt der Unterklasse, um einen Befehl auf Verzeichnisebene zu erstellen. |
DirectoryPaneListener | Dies ist das Objekt der Unterklasse, um eine Funktion zu erstellen, die Änderungen im Verzeichnisbereich überwacht. |
show_alert | Diese Funktion zeigt einen Alarmdialog mit der angezeigten Nachricht. |
load_json | Dies wird in json-Datendateien aus dem Benutzerverzeichnis geladen. |
DATA_DIRECTORY | Dies ist das Verzeichnis zum Speichern von Fman-Daten. |
show_prompt | Dadurch erhält der Benutzer eine Eingabe mit der angegebenen Nachricht. |
Sie können alle verfügbaren Funktionen in sehen fman Dokumentationsseite. Derzeit ist es eine Liste von Funktionsnamen und deren Standardeingaben.
Richten Sie nach dem Laden der Bibliotheken zwei globale Variablen ein: PROJECTDIR
und PROJESTSLISTE
.
Diese globalen Werte sorgen dafür, dass die Verzeichnisprüfung schnell abläuft. Das ist wichtig, wenn Sie eine Routine schreiben, die jedes Mal ausgeführt wird fman wechselt Verzeichnisse.
class SetProjectDirectory (DirectoryPaneCommand): # # Dieser Verzeichnisbefehl dient zum Einrichten eines neuen Projektverzeichnisses. Es fügt der Liste der Projektverzeichnisse # hinzu und setzt das aktuelle Projektverzeichnis auf das Verzeichnis. # def __call __ (self): # # Liefert den Verzeichnispfad. # selected_files = self.pane.get_selected_files () wenn len (selected_files)> = 1 oder (len (selected_files) == 0 und self.get_chosen_files ()): wenn len (selected_files) == 0 und self.get_chosen_files (): selected_files.append (self.get_chosen_files () [0]) dirName = selected_files [0] wenn os.path.isfile (dirName): # # Dies ist eine Datei und kein Verzeichnis. Rufen Sie das Verzeichnis # name für das übergeordnete Verzeichnis dieser Datei ab. # dirName = os.path.dirname (dirName) # # Legt das als Projektverzeichnis erhaltene Verzeichnis fest. # mit open (PROJECTDIR, "w") als f: f.write (dirName) # # Zur Liste der Projekte hinzufügen. Holen Sie sich einen Namen vom Benutzer. # projName, checked = show_prompt ("Name dieses Projekts:") projEntry = projName + "|" + dirName writeappend = 'w' wenn os.path.isfile (PROJECTSLIST): writeappend = 'a' mit offen (PROJECTSLIST, writeappend) als f: f.write (projEntry + "\ n") # # Erstellen Sie die Startskriptdatei und öffnen Sie sie im # Editor. # scriptFile = dirName + "/.startproject" mit open (scriptFile, 'w') als f: f.write ("#! / bin / sh \ n \ n") os.chmod (scriptFile, stat.S_IEXEC | stat .S_IRUSR | stat.S_IWUSR) scriptLoc = load_json ("OpenWithEditor.json") ["scriptLoc"], wenn scriptLoc None ist: # # Öffnen Sie die Datei mit dem TextEdit, das sich auf jedem Mac befindet. # os.system ("/ usr / bin / open -a TextEdit '" + scriptFile + "" ") else: # # Sie haben die OpenWithEditor-Erweiterung. Benutze es. # os.system ("'" + scriptLoc + "" file "" + scriptFile + "" & ") else: # # Technisch wird dies nie erreicht. Nur hier # zur Vollständigkeit. # show_alert ("Kein Verzeichnis ausgewählt")
Das SetProjectDirectory
Klasse ist eine Unterklasse von DirectoryPaneCommand
. Das __Anruf__
Die Methode wird immer ausgeführt, wenn der Befehl ausgeführt wird set_project_directory
es läuft.
Diese Funktion ruft das aktuelle Verzeichnis ab, legt es als aktuelles Projekt fest, fragt den Benutzer nach einem Namen für das Projekt, speichert dieses in einer Projektlistendatei, erstellt die .Startprojekt
Datei und öffnet sie im Editor der Wahl durch die OpenWithEditor
Erweiterung oder TextEdit.
class ClearProjectDirectory (DirectoryPaneCommand): # # Dieser Verzeichnisbefehl löscht das aktuelle Projekt. # Dies ist gut, bevor Sie fman verlassen. # def __call __ (selbst): mit open (PROJECTDIR, 'w') als f: f.write ("")
Der nächste Befehl lautet ClearProjectDirectory. Dieser Befehl löscht das ~ / aktuelles Projekt
Datei.
Klasse EditProjectStartScript (DirectoryPaneCommand): # # Dieser Verzeichnisbefehl löscht das aktuelle Projekt. # Dies ist gut, bevor Sie fman verlassen. # def __call __ (self): # # Das aktuelle Projektverzeichnis abrufen. # dirName = "" mit open (PROJECTDIR, 'r') als f: dirName = f.read () wenn dirName! = "": # # Ein Projektverzeichnis ist gesetzt. Bearbeiten Sie die Startdatei. # scriptFile = dirName + "/.startproject" scriptLoc = load_json ("OpenWithEditor.json") ["scriptLoc"], wenn scriptLoc None ist: # # Öffnen Sie die Datei mit dem TextEdit, der auf jedem Mac vorhanden ist. # os.system ("/ usr / bin / open -a TextEdit '" + scriptFile + "" ") else: # # Sie haben die OpenWithEditor-Erweiterung. Benutze es. # os.system ("'" + scriptLoc + "" file "" + scriptFile + "" & ")
Das EditProjectStartScript Mit dem Befehl können Sie das bearbeiten .Startprojekt
Skript für das aktuell eingestellte Projekt.
Sie müssen sich nicht im Hauptverzeichnis des Projekts befinden, um diesen Befehl auszuführen, aber Sie müssen über ein gültiges Projekt verfügen.
class EnteringProjectDirectory (DirectoryPaneListener): # # Wird immer aufgerufen, wenn ein Verzeichnis in fman geändert wird. Überprüfen Sie kurz, ob es sich um ein Projektverzeichnis handelt. Wenn ja, wenn es nicht das aktuelle Projekt ist, setzen Sie # auf das aktuelle Projekt und führen Sie das Setup-Skript # für das Projekt aus. # def on_path_changed (self): # # Prüfen Sie, ob das neue Verzeichnis ein Projektverzeichnis ist. # newDir = self.pane.get_path () scriptFile = newDir + "/.startproject" if os.path.isfile (scriptFile): # # Ruft den aktuellen Projektnamen ab und prüft, ob sie # gleich sind. # projDir = "" mit open (PROJECTDIR) als f: projDir = f.read () if projDir! = newDir: # # Sie sind verschieden! Legen Sie das neue Projektverzeichnis # fest und führen Sie das Skript .startproject aus. # mit open (PROJECTDIR, "w") als f: f.write (newDir) os.system ("'" + scriptFile + "" ")
Das ProjectDirectory eingeben Befehl ist der Hauptbefehl für diese Erweiterung. Alle anderen Befehle bringen diesen Befehl zum Laufen.
Da ist es eine Unterklasse der DirectoryPaneListener
, Es wird jedes Mal ausgeführt, wenn Verzeichnisse geändert werden. Aus diesem Grund sollte diese Routine so kurz und schnell wie möglich sein. Andernfalls, fman wird sehr umständlich zu bedienen.
Dieser Befehl prüft, ob ein Projektverzeichnis eingegeben wurde. Wenn ja, prüft es, ob es sich vom aktuell eingestellten Projekt unterscheidet. Wenn dies der Fall ist, legt es das neue Projektverzeichnis fest und führt das Projekt aus .Startprojekt
Skript.
Um das System zu testen, fügte ich diesen Code hinzu .Startprojekt
Datei:
#! / bin / sh echo “d.type = Datum \ nd.label = Beispieldatum \ nd.default = 2007-05-30 17: 00 \ nd.time = 1” | /Anwendungen/Pashua.app/Contents/MacOS/Pashua -
Dies verwendet die Pashua Programm, um einen Kalender und eine Uhr anzuzeigen. Es ermöglicht eine schnelle visuelle Überprüfung, ob das Programm funktioniert.
Der nächste Punkt ist die Hotkey-Zuweisung für die Erweiterung. Fügen Sie dies im oberen Teil des Erweiterungsverzeichnisses dem hinzu Key Bindings.json
Datei:
["Keys": ["shift + s"], "command": "set_project_directory", "keys": ["shift + c"], "command": "clear_project_directory", "keys": ["Shift + e"], "command": "edit_project_start_script"]
Jeder Nebenstelle können Hotkeys zugewiesen werden. Diese werden geladen, bevor dieselbe Datei vom geladen wird Benutzer
Erweiterung.
Auf diese Weise kann der Benutzer alle Einstellungen in den Erweiterungen überschreiben. Ich weise zu Verschiebungen zum set_project_directory
Befehl. Ich weise zu Umschalttaste-C zum clear_project_directory
Befehl. Und ich ordne zu Umschalttaste-E zum edit_project_start_script
Befehl.
Wenn Sie das einstellen Projektmanager Verzeichnis als Projektverzeichnis, geben Sie den Projektnamen an Projekt verwaltenr, verlassen Sie das Verzeichnis, löschen Sie die Projekte mit Umschalttaste-C oder laufen lassen clear_project_directory
Geben Sie an der Eingabeaufforderung das Verzeichnis erneut ein.
Sie werden das sehen Pashua Eingabeaufforderung mit Datum und Uhrzeit. Jetzt können Sie Startskripte erstellen, die den Texteditor mit den Projektdateien starten und die Fenster auf dem Bildschirm für ein besseres Arbeiten organisieren.
ich benutze Hammerlöffel um die Fensterlayouts aus einem Skript zu erstellen. Sie können auch Verzeichnisüberwacher ausführen, um Ihr Projekt neu zu kompilieren und in einen Webbrowser zu laden.
Die Möglichkeiten sind endlos.
Jetzt wissen Sie, wie Sie Erweiterungen für erstellen fman, Mach weiter und erstelle dein eigenes.
Es gibt viele Möglichkeiten, die Funktionalität dieser einfachen Erweiterung zu erweitern. fman macht viel Spaß und ist sehr einfach zu erweitern, um die Funktionalität zu haben, die Sie benötigen.