Comment obtenir une vue d'ensemble dans sublime texteditor?

117

Comment obtenir une vue d'ensemble dans l' éditeur de texte sublime pour Windows?

La minicarte est utile mais je manque un contour traditionnel (une liste de toutes les fonctions de mon code dans l'ordre dans lequel elles apparaissent pour une navigation et une orientation rapides)

Peut-être y a-t-il un plugin, addon ou similaire? Ce serait également bien si vous pouviez nommer brièvement les étapes nécessaires pour que cela fonctionne.

Il y a un double de cette question sur les sublimes forums de texte.

user89021
la source
J'ai ajouté une demande de fonctionnalité pour SublimeText 3. N'hésitez pas à voter pour elle.
Nom est carl

Réponses:

266

Appuyez sur CTRL+ R, ou CMD+ Rpour Mac, pour la liste des fonctions. Cela fonctionne dans Sublime Text 1.3 ou supérieur.

Cory Petosky
la source
Ça m'a l'air bien. Mais rien ne se passe lorsque j'appuie sur ctrl-r. J'ai un fichier php ouvert. Puis-je localiser la commande dans un menu? Cela fonctionne-t-il sans plugin? karlthorwald
user89021
6
Ctrl + r existe dans la version bêta actuelle ( sublimetext.com/beta ), mais pas dans la version 1.2
jskinner
1
C'est génial et il me manquait vraiment une vue d'ensemble d'Eclipse. C'est honnêtement beaucoup mieux, même si j'aurais aimé qu'il y ait un moyen de ne tirer que les fonctions principales et non les fonctions de rappel / succès.
Michael BW
1
La liste n'est malheureusement pas triée. La vue d'ensemble d'Eclipse me manque avec une liste triée de fonctions.
scorpiodawg
1
Des progrès supplémentaires sur une vue d'ensemble réelle comme ce qui est disponible dans les éditeurs Eclipse et Oxygen? Ce qui manque avec ctrl + r, c'est qu'il n'y a aucune indication de ce qui a été décrit si c'est une variable ou une fonction similaire.
kstubs
17

J'utilise l'action de pliage tout. Cela réduira tout à la déclaration, je peux voir toutes les méthodes / fonctions, puis développer celle qui m'intéresse.

Enmanuel Rivera
la source
10
Depuis le menu ST 3: Modifier le code Plier-Plier tout. Raccourci Ctrl + k, 1. Ctrl-k, j pour annuler
wolfstevent
16

Un plugin nommé Outline est disponible dans le contrôle des packages, essayez-le! https://packagecontrol.io/packages/Outline

Remarque: cela ne fonctionne pas en mode multi lignes / colonnes. Pour le travail sur plusieurs lignes / colonnes, utilisez cette fourchette: https://github.com/vlad-wonderkidstudio/SublimeOutline

Elian
la source
2
Remarque: pour quitter la vue Plan, cliquez sur le petit bouton de fermeture dans l'onglet Plan, puis appuyez sur Shift+ Alt+ 1ou allez dans Affichage -> Disposition -> Unique. Pour l'ouvrir, utilisez Ctrl+ Shift+ Ppuis recherchezBrowse Mode: Outline
Gabriel Staples
8

Je regarde brièvement l' api SublimeText 3 et view.find_by_selector(selector)semble être en mesure de renvoyer une liste de régions.

Je suppose donc qu'un plugin qui afficherait le contour / la structure de votre fichier est possible.

Un plugin qui afficherait quelque chose comme ceci:

aperçu du code

Remarque: le plugin d'affichage du nom de la fonction peut être utilisé comme source d'inspiration pour extraire les noms de classe / méthodes ou ClassHierarchy pour extraire la structure du contour

Le nom est carl
la source
0

Si vous voulez pouvoir imprimer ou enregistrer le contour, ctr / commande + r n'est pas très utile. On peut faire une simple recherche sur le grep suivant ^[^\n]*function[^{]+{ ou sur une variante de celui-ci en fonction de la langue et de la situation dans lesquelles vous travaillez.

Une fois que vous avez fait la recherche, vous pouvez copier et coller le résultat dans un nouveau document et en fonction du nombre de fonctions, le rangement ne devrait pas prendre longtemps.

La réponse est loin d'être parfaite, en particulier pour les cas où les commentaires contiennent le mot fonction (ou son équivalent), mais je pense que c'est une réponse utile.

Avec un montage très rapide, c'est le résultat que j'ai obtenu sur ce sur quoi je travaille actuellement.

    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
la source