Есть ли в Sublime Text 2 возможность регионального кода, аналогичного Visual Studio?

В Visual Studio вы можете минимизировать огромные куски кода, используя регионы; по сути, они просто окружают код и минимизируют его в окне.

Есть ли в Sublime аналогичная функция?


person piperchester    schedule 13.12.2012    source источник
comment
Просто поясню, что это функция Visual Studio, а не C#. Кажется, есть некоторая функция свертывания кода, но она, похоже, не работает, как в VS.   -  person madth3    schedule 14.12.2012
comment
Небольшое примечание: StyleCop отклоняет использование регионов.   -  person Filburt    schedule 14.12.2012
comment
Если вы используете Sublime Text 3, вот плагин, который может это сделать: github.com/jamalsenouci/sublimetext -синтаксис   -  person Dio Phung    schedule 13.05.2016


Ответы (9)


По умолчанию вы можете выбрать некоторый код, чтобы перейти к Edit > Code Folding > Fold.. Существует множество плагинов, которые используют API для свертывания кода для получения дополнительных опций.

person BoundinCode    schedule 14.12.2012
comment
Я предполагаю, что вы тот добрый человек, который проголосовал за меня, не предоставив комментарий. Не могли бы вы предоставить решение данной проблемы, которое regions похоже на Visual Studio? Пожалуйста, укажите плагин, который это делает, спасибо. - person emartel; 14.12.2012
comment
Понижение было за дезинформацию. Вы процитировали очень старый источник о том, что свертывание кода не реализовано. С тех пор Джон передумал и добавил полную поддержку свертывания кода в ST2 (API здесь: sublimetext .com/docs/2/api_reference.html). Не могли бы вы уточнить, что вы подразумеваете под regions в VS? Я не слишком знаком, особенно потому, что regions означает что-то другое в ST. - person BoundinCode; 14.12.2012
comment
Области в Visual Studio определяются с помощью тегов #region RegionName/#endregion, которые сворачиваются в одну строку с надписью RegionName. Я много использовал ST2 и еще не видел плагина, который бы это делал. - person emartel; 14.12.2012
comment
И используя регионы ST2, можно было бы добавить такие регионы, но на уровне API нет возможности вручную вызвать складывающиеся стрелки, чтобы обеспечить хорошую интеграцию, поэтому я сказал, что это, вероятно, не будет выглядеть слишком хорошо. - person emartel; 14.12.2012
comment
Хм, кажется, это очень просто сделать с помощью плагина. На данный момент есть несколько известных мне плагинов, которые обеспечивают эту функциональность (плюс они делают много дополнительных вещей), но они управляются с клавиатуры. Что мне пришло в голову: бета-версия BracketHighlighter 2 позволяет сворачивать пользовательские регионы, чтобы вы могли добавлять #region и #endregion. RegReplace также позволяет создавать собственные области сворачивания, но это немного сложнее. Однако было бы не слишком сложно сделать собственный плагин с картой мыши. Я посмотрю, что я могу придумать. - person BoundinCode; 14.12.2012
comment
Если бы я еще не работал над чем-то другим, я бы что-нибудь на скорую руку (прошло много времени с тех пор, как я выпустил плагин ST2!), Я проверю два плагина, которые вы упомянули, но мне нравятся простые плагины, которые по делу, Спасибо, что поделился - person emartel; 14.12.2012

На официальном сайте есть запрос «запросить функции» здесь.

Но видимо:

К вашему сведению, Джон заявил, что это невозможно в текущей реализации элемента управления редактором. Похоже, мы ждем V3, ребята.

Джон — программист Sublime Text 2.

Может быть способ подделать его, создав плагин, который ищет маркеры и удаляет область кода между маркерами, но это, вероятно, будет выглядеть не очень хорошо. С текущим API это, вероятно, ваш лучший выбор!

Кстати, в Sublime Text есть некоторое свертывание кода, если вы наведете указатель мыши рядом с номером строки, вы увидите несколько стрелок, появляющихся, когда вы можете свернуть/развернуть.

person emartel    schedule 13.12.2012
comment
Может быть, что-то изменилось для ST3? - person sigod; 05.03.2014

В итоге я использовал пользовательские теги комментариев с отступом на один уровень меньше, чем код, который я хочу свернуть. Выглядит не лучшим образом, хотя служит своей цели.

class Foobar {
    // ...some code

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

    // more code...
}

Это (на данный момент) складывается до:

class Foobar {
    // ...some code

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

    // more code...
}

Было бы неплохо иметь встроенную поддержку ST2 для этого.

person rdamborsky    schedule 08.01.2013
comment
Почему это работает/как это называется? Работает ли это, потому что он считается блоком кода просто на основе отступа? Некрасиво, но работает ужасно хорошо. Спасибо! - person ruffin; 08.08.2017

Это похоже на то, что вы ищете. Вы можете определить теги #region и #endregion для каждого языка или общий тег для всех языков.

person Adrian Lopez    schedule 13.07.2015

Если вы одержимы намерением, это решение может вызвать у вас дискомфорт, но вот оно, когда-то давно, когда я писал полусложный плагин jQuery, у меня были константы, переменные, разделы частных и общедоступных функций и такие складки. ;

;(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);

Как видите, все дело в намерении. Секции можно складывать; Consts, Variables, Functions. А также внутри секции Functions можно сложить Public Functions и Private Functions.

Вы также можете использовать однострочный комментарий (//), чтобы назвать свою складку. Итак, основная идея проста; ST2 считает, что более предназначенные строки принадлежат первому менее преднамеренному комментарию над ними, например, компиляторы C/C++ обрабатывают скобки как собственные уникальные блоки кода.

person ozanmuyes    schedule 22.10.2013

Чтобы свернуть код, выберите код и нажмите

ctrl + shift + [

Чтобы развернуть код, поместите туда курсор и нажмите

ctrl + shift + ]

person Virendra Singh    schedule 02.09.2016

Я думаю, что, как и я, ОП оценил малоизвестную функцию в VS под названием регионы, которые многие приравнивают к сворачиванию кода, но НАМНОГО мощнее и выше, Дио Фунг дал ответ то, что я хотел, и я подозреваю, что хотел ОП, но он не поделился ответом, так что вот он.

Разница между «свертыванием кода», как это предусмотрено в Sublime Text, заключается в том, что оно основано на синтаксисе кода/компилятора, в то время как «регионы» и то, что делает этот плагин, дают вам бесконечно больше свободы, хотя эта свобода более или менее зависит от код, с которым вы работаете для начала (глубоко вложенный или правильно модульный).

Если вы используете Sublime Text 3, вот плагин, который может это сделать: github.com/jamalsenouci/sublimetext -syntaxfold — Дио Фунг

person rainabba    schedule 04.10.2018

В языках, которые поддерживают 3 типа комментариев (например, PHP), я использую комментарий хэштега для регионов, как показано в других ответах. Это также хорошо для отслеживания того, что делается

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


$old_code = 1;

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

$old_code = $result;

В противном случае используйте тройную косую черту /// или //# и т. д.

person Lemures    schedule 05.07.2018
comment
Я использую тот же стандарт, но ваш ответ не касается того, как добавить эту функцию/поведение, а только ваше соглашение. - person rainabba; 04.10.2018

В возвышенном тексте это работает так, он затеняет строки, которые вы хотите свернуть, и нажимает (Control + Shift +?)

У меня самая последняя версия сублимтекста.

person Andres Romero    schedule 15.12.2017
comment
огромные куски кода, использующие регионы «регионы», например: )" rel="nofollow noreferrer">docs.microsoft.com/en-us/previous-versions/visualstudio/ - person rainabba; 04.10.2018