Wie bekomme ich eine Gliederungsansicht in sublime texteditor?

117

Wie erhalte ich eine Übersichtsansicht im erhabenen Texteditor für Windows?

Die Minikarte ist hilfreich, aber ich vermisse eine traditionelle Gliederung (eine klickbare Liste aller Funktionen in meinem Code in der Reihenfolge, in der sie zur schnellen Navigation und Orientierung angezeigt werden).

Vielleicht gibt es ein Plugin, Addon oder ähnliches? Es wäre auch schön, wenn Sie kurz benennen könnten, welche Schritte erforderlich sind, damit es funktioniert.

Es gibt ein Duplikat dieser Frage in den großartigen Textforen.

user89021
quelle
Ich habe eine Feature-Anfrage für SublimeText 3 hinzugefügt. Sie können gerne dafür stimmen.
Name ist Carl

Antworten:

266

Drücken Sie CTRL+ Roder CMD+ Rfür Mac für die Funktionsliste. Dies funktioniert in Sublime Text 1.3 oder höher.

Cory Petosky
quelle
Klingt gut. Aber nichts passiert, wenn ich Strg-R drücke. Ich habe eine PHP-Datei geöffnet. Kann ich den Befehl in einem Menü finden? Funktioniert das ohne Plugin? karlthorwald
user89021
6
Strg + r existiert in der aktuellen Beta-Version ( sublimetext.com/beta ), aber nicht in 1.2
jskinner
1
Das ist großartig und mir hat die Umrissansicht von Eclipse wirklich gefehlt. Dies ist ehrlich gesagt viel besser, obwohl ich mir wünschte, es gäbe eine Möglichkeit, nur die Hauptfunktionen und nicht die Rückruf- / Erfolgsfunktionen aufzurufen.
Michael BW
1
Die Liste ist leider nicht sortiert. Ich vermisse die Gliederungsansicht von Eclipse mit einer sortierten Liste von Funktionen.
Scorpiodawg
1
Gibt es zusätzliche Fortschritte bei einer echten Gliederungsansicht, wie sie in den Eclipse- und Oxygen-Editoren verfügbar sind? Was bei Strg + r fehlt, ist, dass es keinen Hinweis darauf gibt, ob es sich um eine Variable oder eine Funktion handelt.
Kstubs
17

Ich benutze die Fold All Action. Es wird alles auf die Deklaration minimiert, ich kann alle Methoden / Funktionen sehen und dann die erweitern, an der ich interessiert bin.

Enmanuel Rivera
quelle
10
Aus dem ST 3-Menü: Edit-Code Folding-Fold All. Tastenkürzel Strg + k, 1. Strg-k, j zum Rückgängigmachen
Wolfstevent
16

Ein Plugin namens Outline ist in der Paketsteuerung verfügbar. Probieren Sie es aus! https://packagecontrol.io/packages/Outline

Hinweis: Es funktioniert nicht im Mehrzeilen- / Spaltenmodus. Verwenden Sie für die Arbeit mit mehreren Zeilen / Spalten diesen Fork: https://github.com/vlad-wonderkidstudio/SublimeOutline

Elian
quelle
2
Hinweis: Um die Gliederungsansicht zu verlassen, klicken Sie auf der Registerkarte Gliederung auf die kleine Schaltfläche zum Schließen und drücken Sie dann Shift+ Alt+ 1oder gehen Sie zu Ansicht -> Layout -> Einzel. Um es wieder zu öffnen, benutze Ctrl+ Shift+ Pund suche dann nachBrowse Mode: Outline
Gabriel Staples
8

Ich schaue kurz auf SublimeText 3 API und view.find_by_selector(selector)scheint in der Lage zu sein, eine Liste von Regionen zurückzugeben.

Ich denke also, dass ein Plugin möglich ist, das den Umriss / die Struktur Ihrer Datei anzeigt.

Ein Plugin, das ungefähr so ​​Folgendes anzeigt:

Code-Gliederung

Hinweis: Das Plugin zur Anzeige von Funktionsnamen kann als Inspiration zum Extrahieren der Klassen- / Methodennamen oder ClassHierarchy zum Extrahieren der Gliederungsstruktur verwendet werden

Name ist Carl
quelle
0

Wenn Sie die Gliederung ausdrucken oder speichern möchten, ist ctr / command + r nicht sehr nützlich. Auf dem folgenden Grep oder einer Variante davon können Sie einfach alles finden , um der Sprache und Situation zu entsprechen, in der Sie arbeiten. ^[^\n]*function[^{]+{

Sobald Sie alle gefunden haben, können Sie das Ergebnis kopieren und in ein neues Dokument einfügen. Je nach Anzahl der Funktionen sollte das Aufräumen nicht lange dauern.

Die Antwort ist alles andere als perfekt, insbesondere in Fällen, in denen die Kommentare die Wortfunktion (oder eine gleichwertige Funktion) enthalten, aber ich denke, dass dies eine hilfreiche Antwort ist.

Mit einer sehr schnellen Bearbeitung ist dies das Ergebnis, an dem ich gerade arbeite.

    PathMaker.prototype.start = PathMaker.prototype.initiate = function(point){};
    PathMaker.prototype.path = function(thePath){};
    PathMaker.prototype.add = function(point){};
    PathMaker.prototype.addPath = function(path){};
    PathMaker.prototype.go = function(distance, angle){};
    PathMaker.prototype.goE = function(distance, angle){};
    PathMaker.prototype.turn = function(angle, distance){};
    PathMaker.prototype.continue = function(distance, a){};
    PathMaker.prototype.curve = function(angle, radiusX, radiusY){};
    PathMaker.prototype.up = PathMaker.prototype.north = function(distance){};
    PathMaker.prototype.down = PathMaker.prototype.south = function(distance){};
    PathMaker.prototype.east = function(distance){};
    PathMaker.prototype.west = function(distance){};
    PathMaker.prototype.getAngle = function(point){};
    PathMaker.prototype.toBezierPoints = function(PathMakerPoints, toSource){};
    PathMaker.prototype.extremities = function(points){};
    PathMaker.prototype.bounds = function(path){};
    PathMaker.prototype.tangent = function(t, points){};
    PathMaker.prototype.roundErrors = function(n, acurracy){};
    PathMaker.prototype.bezierTangent = function(path, t){};
    PathMaker.prototype.splitBezier = function(points, t){};
    PathMaker.prototype.arc = function(start, end){};
    PathMaker.prototype.getKappa = function(angle, start){};
    PathMaker.prototype.circle = function(radius, start, end, x, y, reverse){};
    PathMaker.prototype.ellipse = function(radiusX, radiusY, start, end, x, y , reverse/*, anchorPoint, reverse*/ ){};
    PathMaker.prototype.rotateArc = function(path /*array*/ , angle){};
    PathMaker.prototype.rotatePoint = function(point, origin, r){};
    PathMaker.prototype.roundErrors = function(n, acurracy){};
    PathMaker.prototype.rotate = function(path /*object or array*/ , R){};
    PathMaker.prototype.moveTo = function(path /*object or array*/ , x, y){};
    PathMaker.prototype.scale = function(path, x, y /* number X scale i.e. 1.2 for 120% */ ){};
    PathMaker.prototype.reverse = function(path){};
    PathMaker.prototype.pathItemPath = function(pathItem, toSource){};
    PathMaker.prototype.merge = function(path){};
    PathMaker.prototype.draw = function(item, properties){};
Trevor
quelle