Externer Editor
Ein Git-Client ist der Ort, an dem du Code liest; er ist selten der Ort, an dem du ihn reparierst. Zwischen „Problem im Diff entdeckt“ und „Cursor steht auf dieser Zeile im Editor“ liegen eine Dateisuche und ein Scrollen — jedes Mal.
Zeig Gitcito einmal, wo dein Editor ist, und diese Lücke schließt sich: Rechtsklick auf eine Zeile in der Datei- oder Blame-Ansicht öffnet sie dort, genau auf dieser Zeile.
Einen auswählen
Einstellungen → Allgemein → Externer Editor. Das Dropdown listet die
Editoren, die Gitcito auf dieser Maschine finden kann — es sucht zuerst nach dem
Befehl jedes Editors und dann, unter macOS, nach dem Application Bundle in
/Applications und ~/Applications. Der Scan läuft jedes Mal, wenn du die
Einstellungen öffnest, sodass ein vor fünf Minuten installierter Editor ohne
Neustart auftaucht.
Ab Werk erkannt:
| Editor | Befehl, nach dem gesucht wird |
|---|---|
| Visual Studio Code | code, code-insiders |
| Cursor | cursor |
| Windsurf | windsurf |
| Zed | zed |
| Sublime Text | subl |
| JetBrains-IDEs | idea, webstorm, pycharm, rustrover, goland, clion, rider, phpstorm |
| Xcode | xed |
Die Grenze, die du kennen solltest
Der Sprung zu einer Zeile braucht den Befehl des Editors, nicht sein Icon.
Ein macOS-.app-Bundle wird über open gestartet, und das akzeptiert einen Pfad
und sonst nichts — ein Editor, der nur als Bundle gefunden wurde, öffnet die
Datei also ganz oben, und Gitcito sagt das unter dem Dropdown, statt so zu tun
als wäre es anders.
Die Lösung liegt auf der Editor-Seite: VS Codes Shell Command: Install 'code'
command in PATH, Sublimes subl-Symlink, JetBrains' Toolbox → Settings →
Shell scripts. Sobald der Befehl existiert, wähle den Editor erneut aus, und der
Zeilensprung funktioniert.
Wo die Aktionen auftauchen
| Oberfläche | Was geöffnet wird |
|---|---|
| Repo-Tab, Repo in der Seitenleiste, Statusleiste | Der Repository-Ordner |
| Dateibaum, Commit-Dateien, Stash-Dateien, der Commit-Composer | Diese Datei |
| Das Icon am Zeilenende im Dateibaum | Diese Datei, mit einem Klick |
| Rechtsklick auf eine Zeile in der Datei-Ansicht | Die Datei, auf dieser Zeile |
| Rechtsklick auf eine Zeile in der Blame-Ansicht | Die Datei, auf dieser Zeile |
Ein .xcodeproj oder anderes Paket im Dateibaum |
Das Paket, in der App, der es gehört |
Zeilenaktionen erscheinen nur dort, wo die Zeilennummer noch etwas bedeutet: Eine Datei, die auf einem alten Commit angezeigt wird, oder ein Blame, das auf eine frühere Revision zurückgespult wurde, hat Zeilen, die nicht mehr zu dem passen, was auf der Platte liegt. Gitcito bietet dort also keinen Sprung an, statt dich an die falsche Stelle zu schicken.
Xcode-Projekte und andere Pakete
MyApp.xcodeproj ist ein Verzeichnis. Git weiß das, und der Dateibaum wusste es
auch — bis es anfing zu stören: es aufzuklappen, um project.pbxproj,
project.xcworkspace und unter xcuserdata einen Ordner pro Entwickler zu
finden, sind drei Klicks Rauschen für etwas, das du ohnehin nie von Hand
bearbeiten wolltest.
Diese Einträge bekommen jetzt ein Paket-Symbol, und ein Klick auf die Zeile
öffnet das Paket — so wie ein Doppelklick im Finder. Der Pfeil bleibt, also
steigst du in dem einen Fall, in dem du project.pbxproj doch brauchst — fast
immer ein Merge-Konflikt — weiterhin hinein.
Erkannt werden: .xcodeproj, .xcworkspace, .xcframework, .framework,
.app, .appex, .dSYM, .playground, .xcuserdatad.
Nicht erkannt, mit Absicht: .xcassets und .lproj. Auch sie sind Pakete,
aber man bearbeitet die Dateien darin, also würde das Zusammenklappen mehr
kosten als es bringt.
Die Grenzen
Das Paket wird über das System geöffnet, nicht über deinen Editor. Ein
.xcodeproj, das man einem Texteditor übergibt, öffnet sich als Ordner voller
Property Lists — nicht das, was jemand beim Klicken wollte. Gitcito übergibt es
deshalb an das, was das Betriebssystem damit verknüpft, auf einem Mac mit Xcode
also an Xcode. Deine Editor-Wahl bleibt unberührt und gilt weiterhin für jede
gewöhnliche Datei.
Es ist eine Namenskonvention, kein Dateisystem-Flag. Gitcito prüft die
Endung — ein Verzeichnis, das du zufällig notes.app genannt hast, wird also
ebenfalls zusammengeklappt, und unter Linux oder Windows, wo das gewöhnliche
Ordner sind, öffnet ein Klick den Dateimanager statt einer IDE.
Ein eigener Befehl
Wähle Eigener Befehl für alles, was nicht in der Tabelle steht — ein Wrapper-Skript, einen Launcher für Remote-Entwicklung, einen Terminal-Editor, den du über deinen eigenen Shim startest.
| Feld | Bedeutung |
|---|---|
| Befehl | Die auszuführende Datei. Keine Shell, also kein &&, keine Pipes, keine Globs. |
| Name | Wie die Menüeinträge ihn nennen. |
| Argumente für eine Datei | argv-Vorlage, z. B. -g {path}:{line}:{col} |
| Argumente für einen Ordner | argv-Vorlage, meist nur {path} |
Vorlagen werden an Leerzeichen zerlegt, und jedes Token wird genau einmal
ersetzt — ein Pfad mit einem Leerzeichen bleibt ein Argument, und danach wird
nichts erneut geparst, sodass ein Dateiname niemals zu Syntax werden kann. Vier
Platzhalter: {path}, {line}, {col}, {repo}.
Ein Platzhalter ohne Wert nimmt sein Flag mit: --line {line} {path} ohne Zeile
ausgeführt wird einfach zum Pfad, niemals zu einem einsamen --line, das den
Dateinamen als sein Argument verschlucken würde. Eine Vorlage ohne {line}
bedeutet schlicht, dass Gitcito für diesen Editor keine zeilengenauen Aktionen
anbietet.
Was das nicht ist
Das ist nicht die Einstellung „Öffnen mit“-App, die den System-Dialog zeigt und sich eine App merkt, um irgendetwas zu öffnen — ein Bild, ein PDF, einen Ordner im Finder. Der Editor ist der spezifischere der beiden: Wo beide gesetzt sind, gewinnt der Editor beim Icon am Zeilenende im Dateibaum; im Rechtsklick-Menü bleiben beide gelistet.
Gitcito startet deinen Editor niemals von selbst, und Gitcito zu schließen schließt ihn nie mit: Der Editor wird abgekoppelt gestartet, als eigener Prozess.