¿Cómo obtener una vista de esquema en sublime texteditor?

117

¿Cómo obtengo una vista de esquema en el editor de texto sublime para Windows?

El minimapa es útil, pero echo de menos un esquema tradicional (una lista seleccionable de todas las funciones en mi código en el orden en que aparecen para una navegación y orientación rápidas)

¿Quizás hay un complemento, complemento o similar? También sería bueno si pudiera nombrar brevemente qué pasos son necesarios para que funcione.

Hay un duplicado de esta pregunta en los foros de texto sublime.

user89021
fuente
Agregué una solicitud de función para SublimeText 3. Siéntase libre de votar por ella.
Nombre es carl

Respuestas:

266

Presione CTRL+ R, o CMD+ Rpara Mac, para la lista de funciones. Esto funciona en Sublime Text 1.3 o superior.

Cory Petosky
fuente
Suena bien. Pero no pasa nada cuando presiono ctrl-r. Tengo un archivo php abierto. ¿Puedo ubicar el comando en un menú? ¿Funciona esto sin un complemento? karlthorwald
user89021
6
Ctrl + r existe en la versión beta actual ( sublimetext.com/beta ), pero no en 1.2
jskinner
1
Esto es increíble y realmente me faltaba la vista de contorno de Eclipse. Honestamente, esto es mucho mejor, aunque desearía que hubiera una manera de que solo muestre las funciones principales y no las funciones de devolución de llamada / éxito.
Michael BW
1
La lista no está ordenada, lamentablemente. Extraño tener la vista de esquema de Eclipse con una lista ordenada de funciones.
scorpiodawg
1
¿Algún progreso adicional en una vista de esquema real como la que está disponible en los editores Eclipse y Oxygen? Lo que falta con ctrl + r es que no hay indicación de lo que se ha delineado si es una variable o una función por igual.
kstubs
17

Yo uso el pliegue toda la acción. Minimizará todo a la declaración, puedo ver todos los métodos / funciones y luego expandir el que me interesa.

Enmanuel Rivera
fuente
10
Desde el menú ST 3: Editar-Código Plegar-Plegar todo. Atajo Ctrl + k, 1. Ctrl-k, j para deshacer
wolfstevent
16

Un complemento llamado Esquema está disponible en el control de paquetes, ¡pruébalo! https://packagecontrol.io/packages/Outline

Nota: no funciona en modo de múltiples filas / columnas. Para trabajar con múltiples filas / columnas, use esta bifurcación: https://github.com/vlad-wonderkidstudio/SublimeOutline

Elián
fuente
2
Nota: Para salir de la vista Esquema, haga clic en el pequeño botón de cierre en la pestaña Esquema, luego presione Shift+ Alt+ 1o vaya a Ver -> Diseño -> Único. Para abrirlo, use Ctrl+ Shift+ Pluego busqueBrowse Mode: Outline
Gabriel Staples
8

Miro brevemente la api de SublimeText 3 y view.find_by_selector(selector)parece que puedo devolver una lista de regiones.

Así que supongo que es posible un complemento que muestre el esquema / estructura de su archivo.

Un complemento que mostraría algo como esto:

esquema de código

Nota: el complemento de visualización del nombre de la función podría usarse como inspiración para extraer los nombres de clases / métodos o ClassHierarchy para extraer la estructura del esquema

Nombre es carl
fuente
0

Si desea poder imprimir o guardar el esquema, ctr / command + r no es muy útil. Se puede hacer una búsqueda simple en el siguiente grep ^[^\n]*function[^{]+{ o en alguna variante del mismo para adaptarse al idioma y la situación en la que está trabajando.

Una vez que hagas la búsqueda de todo, puedes copiar y pegar el resultado en un nuevo documento y, dependiendo de la cantidad de funciones, no debería tardar mucho en ordenar.

La respuesta está lejos de ser perfecta, particularmente para los casos en que los comentarios tienen la palabra función (o su equivalente) en ellos, pero creo que es una respuesta útil.

Con una edición muy rápida, este es el resultado que obtuve en lo que estoy trabajando ahora.

    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
fuente