¿Sublime Text 2 tiene la capacidad de código de región similar a Visual Studio?


En Visual Studio puede minimizar grandes trozos de código usando regiones; básicamente solo rodean el código y lo minimizan en la ventana.

¿Sublime tiene una característica similar a esta?

Author: piperchester, 2012-12-14

9 answers

De forma predeterminada, puede seleccionar algún código ir a Edit > Code Folding > Fold. Hay toneladas de complementos que aprovechan la api de plegado de código para obtener más opciones.

 19
Author: BoundinCode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-14 02:11:12

Hay una solicitud en el sitio oficial para "preguntar por características" aquí.

Pero aparentemente:

Para su información, Jon ha declarado que esto no es posible en el actual implementación del control del editor. Parece que estamos esperando hasta V3 chico.

Jon es el programador detrás de Sublime Text 2.

Puede haber una manera de fingirlo creando un plugin que busque marcadores y elimine la región de código entre los marcadores, pero probablemente no se vería bien. Con la API actual, es probablemente su mejor apuesta!

Por cierto, hay algún código plegado en Sublime Text, si pasa el mouse junto al número de línea, verá algunas flechas que aparecen cuando puede plegarse / desplegarse.

 10
Author: emartel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-13 23:13:20

Terminé usando etiquetas de comentario personalizadas, con sangría un nivel menos que el código que quiero doblar. No se ve mejor, aunque sirve a su propósito.

class Foobar {
    // ...some code

// <fold
    function foo() {
    }
    function bar() {
    }
// </fold

    // more code...
}

Esto (por el momento) se pliega a:

class Foobar {
    // ...some code

// <fold[...]
// </fold

    // more code...
}

Tener un soporte ST2 nativo para esto sería bueno.

 7
Author: rdamborsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-08 16:08:39

Si estás obsesionado con la intendación, esta solución puede hacerte sentir incómodo, pero aquí está, érase una vez mientras yo había estado escribiendo un plugin jQuery semi-complejo que he tenido constantes, variables, funciones privadas y públicas secciones y foldings como así;

;(function($, undefined, window) {...

/* Consts */

    var FOO = "BAR";

/* Variables */

    var m_Foo = "bar";

/* Functions */

    /* Public Functions */

        function foo() {...}

        function bar() {...}

    /* Private Functions */

        function _foo() {...}

        function _bar() {...}

})(jQuery, window);

Como puedes ver, todo se trata de intendencia. Las secciones se pueden plegar; Consts, Variables, Functions. Y también dentro de la sección Functions, Public Functions y Private Functions se pueden plegar.

También puede usar un comentario de línea (//) para nombra tu redil. Así que la idea debajo de eso es simple; ST2 piensa que las líneas más intencionadas pertenecen al primer comentario menos intencionado por encima de ellas, como los compiladores de C/C++ que manejan los corchetes como bloques de código únicos propios.

 3
Author: ozanmuyes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-22 09:17:14

Esto se ve lo que estás buscando. Puede definir etiquetas para # region y #endregion para cada idioma, o una etiqueta genérica para todos ellos.

 3
Author: Adrian Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-13 15:20:05

Para doblar el código seleccione el código y pulse

ctrl + cambio + [

Para desplegar el código coloca el cursor allí y presiona

ctrl + cambio + ]

 2
Author: Virendra Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-02 05:45:08

Creo que al igual que yo, la OP ha llegado a apreciar una característica poco conocida en VS llamado regiones que muchos equivalen a plegado de código, pero es mucho más potente y superior, Dio Phung proporcionó la respuesta que quería, y sospecho que la OP quería, pero no compartió como una respuesta, así que aquí está.

La diferencia entre" plegado de código "como se proporciona en Sublime Text es que se basa en la sintaxis de código/compilador, mientras que "regiones" y lo que hace este plugin, le permiten infinitamente más libertad, aunque es una libertad que depende más o menos del código con el que estás trabajando para empezar (profundamente anidado o correctamente modularizado).

Si estás en Sublime Text 3, aquí hay un plugin que puede hacerlo : github.com/jamalsenouci/sublimetext-syntaxfold - Dio Phung

 0
Author: rainabba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-04 18:01:28

En idiomas que admiten 3 tipos de comentarios (por ejemplo, PHP) utilizo el hashtag comentario para regiones, como se muestra en las otras respuestas. También es bueno para hacer un seguimiento de lo que se está haciendo

# default options
    $a = 3;
    $b = 'bob';


$old_code = 1;

# bugfix #130
    $result = magic_function($data);
    fix_stuff($result);

$old_code = $result;

De lo contrario use triple slash ///, o //# etc.

 -1
Author: Lemures,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-05 07:35:49

En sublime text, funciona así, sombrea las líneas que desea contraer y presiona (Control + Shift +?)

Tengo la versión más reciente de sublimetext.

 -2
Author: Andres Romero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-15 15:51:14