Как свернуть разделы кода в Visual Studio Code для Windows?

772

Как мне свернуть или свернуть разделы кода в Visual Studio Code?

Эта функция поддерживается?

Ник
источник

Ответы:

1353

Свертывание развернуто и теперь реализуется начиная с версии 0.10.11 кода Visual Studio . Доступны следующие сочетания клавиш:

  • Fold складывает внутреннюю незакрепленную область у курсора:

    • Ctrl+ Shift+ [в Windows и Linux
    • + + [На MacOS
  • Развернуть Развернуть свернутую область в курсоре:

    • Ctrl+ Shift+ ]в Windows и Linux
    • + + ]На MacOS
  • Fold All сворачивает все регионы в редакторе:

    • Ctrl+ ( K=> 0) (ноль) в Windows и Linux
    • + ( K=> 0) (ноль) в macOS
  • Развернуть все Развернуть все регионы в редакторе:

    • Ctrl+ ( K=> J) в Windows и Linux
    • + ( K=> J) в macOS

Ссылки: https://code.visualstudio.com/docs/getstarted/keybindings

Brocco
источник
2
@DouglasGaskell Я сделал ту же ошибку. Это ноль, а не о, Fold Levelответ Майкла Фултона имел для меня больше смысла.
Дэн Маршалл
1
Не знаю, является ли это проблемой с версией кода, проблемой с версией Windows или чем-то еще, но на моем ПК это работает только с правой клавишей Ctrl. Вы можете отметить это!
Марс
7
В основном это Ctrl + K, Ctrl + [n], где n - номер уровня, до которого вы хотите сложить. Следовательно, если вы ищете эквивалент Ctrl + M, Ctrl + O VS (C #) на VSCode, это будет Ctrl + K, Ctrl + 3.
Яшаш Гаурав
3
@ Preza8 Нажмите F1и тип Fold или Открываются
AlexG
2
@ Preza8 Также показывает текущую привязку клавиш, если ни одна не назначена, вы можете назначить ее самостоятельно. Также может быть расширение для добавления пользовательских кнопок GUI
AlexG
222

Начиная с кода Visual Studio версии 1.12.0, апрель 2017 г., см. Раздел « Базовое редактирование»> «Складывание » в документации.

Ключи по умолчанию:

Сложить все: CTRL+ K, CTRL+ 0(ноль)

Уровень сгиба [n]: CTRL+ K, CTRL+ [n]*

Развернуть все: CTRL+ K, CTRL+J

Сложите регион: CTRL+ K, CTRL+[

Развернуть регион: CTRL+ K, CTRL+]

* Fold Level: чтобы сложить все, кроме самых внешних классов, попробуйте CTRL+ K, CTRL+1

Mac: используйте вместо CTRL(спасибо Prajeet)

Майкл Фултон
источник
Сохраняет и восстанавливает ли состояние складок между запуском / выключением IDE?
Зеленый
Почему-то ctrl+k,ctrl+numработает только на числа выше qwerty, а не на numpad
MotKohn
2
Fold to level [n] не сворачивает секцию, в которой находится курсор. Это всегда заставляет меня думать, что это не то, что я ожидал. Есть ли возможность отключить это поведение?
RonnBlack
92

Свертывание кода по регионам поступило с v1.17. Складывание по регионам документации . И v1.19 и 1.23 .

[ Как правило , вы можете добавить пробел, например , // region and // endregionк , //region and //endregionи он будет работать.]

TypeScript/JavaScript: //#region and //#endregion or // #region and // #endregion
C#:                    #region and #endregion
C/C++:                 #pragma region and #pragma endregion
F#:                    //#region and //#endregion
PowerShell:            #region and #endregion
Python:                #region and #endregion
VB:                    #Region and #End Region
PHP:                   #region and #endregion
Bat:                   ::#region and ::#endregion or REM #region and REM #endregion
Markdown:              <!-- #region --> and <!-- #endregion -->
Golang                 //region and //endregion or //#region and //#endregion
Java                   //#region and //#endregion
CSS/SCSS/Less:         /* #region */ and /* #endregion */ or /*#region*/ and /*#endregion*/
SCSS/Less:             // #region and // #endregion
Go:                    // region, // endregion and // #region, // #endregion
shellscript:           # region and # endregion
Perl5                  #region and #endregion or =pod and =cut`

Важно: если вы не видите свой язык в списке:

У каждого языка также есть фрагменты, доступные для маркеров. Введите «#» и вызовите завершение кода, чтобы увидеть их. Чтобы настроить региональные маркеры для вашего языка, обратитесь к поставщику языковых расширений.

Поэтому напечатайте #и затем Ctrl+, Spaceчтобы увидеть маркеры региона для любого языка.


отметка
источник
1
// regionи // endregionне работают с VS Code 1.22 (хотя не тестировали версии ниже или выше). Но так // #regionи // #endregionработает (обратите внимание на «#» и пробел в обоих). Таким образом, ESLint (если вы используете) не будет отображать ошибку, если spaced-commentправило включено (т. Е. Не установлено на «off» или «0»).
ozanmuyes
В CSS это на самом деле /* #region Foo Bar */и/* #endregion */
toddmo
1
@ozanmuyes это зависит от типа файла (языка). //regionи //endregionдля JavaScript.
lealceldeiro
Прекрасно работает и в файлах Docker .yaml, если вы установите докер Microsoft ext: marketplace.visualstudio.com/…
Роберт
v1.41: я попробовал XML, и это сработало! <!-- #region --> elements <!-- #endregion -->, Он отображает текст после #region в сложенном разделе. Он корректно складывается из текущего #region в соответствующий #endregion, даже если есть другие вложенные - как в скобках в любом уравнении. Он запоминает настройку сгиба для вложенных областей. Ctrl + k + Ctrl + [и Ctrl + k + Ctrl +] правильно закрывают / открывают сгибы на курсоре. (что кажется немного отсталым для меня, но whatevah) Отличный материал!
TonyG
73

Эта функция теперь доступна в стандартной сборке. Чтобы отобразить элементы управления свертыванием / развертыванием, необходимо навести курсор мыши на область справа от номеров строк, как показано на этом снимке экрана:

Введите описание изображения здесь

BraveNewMath
источник
31

Вы должны добавить пользовательские настройки:

{
    "editor.showFoldingControls": "always",
    "editor.folding": true,
    "editor.foldingStrategy": "indentation", 
}
Минь Тянь Тран
источник
"editor.foldingStrategy" был для меня самым полезным советом. Я редактирую код Liquid (Shopify) и не смог свернуть мой код. После того, как я перешел от «Auto» в «вдавливание» VS код посмотрел на отступе не языка конкретного я использую, очень полезно, спасибо
Benjamin
24

Сокращение / расширение по умолчанию:

Ctrl+ Shift+ [: «Сложить»

Ctrl+ Shift+ Alt+ [: «Сложить все»

Ctrl+ Shift+ ]: «Развернуть»

Ctrl+ Shift+ Alt+ ]: «Развернуть все»

Или перейдите в keybindings.json и измените, как хотите.

Например:

{
    "key": "cmd+k cmd+m",
    "command": "editor.foldAll",
    "when": "editorFocus"
},
{
    "key": "cmd+m cmd+k",
    "command": "editor.unfoldAll",
    "when": "editorFocus"
},
Самуэль Пинто
источник
это ограничено некоторыми языками? у меня не работает на OSX / машинопись.
августа
1
Пожалуйста, просмотрите это: ctrl+shift+alt+[ "Unfold all"Вы написали [вместо ]. Поправь меня, если я ошибаюсь.
fWd82
@dcsan это также не работает для меня в python / linux. Ctrl + K, Ctrl + 0 (ноль) и Ctrl + K, Ctrl + J работают, хотя в соответствии с принятым ответом
очистить
это не работает
KansaiRobot
19

Если ни один из ярлыков не работает (как у меня), в качестве обходного пути вы также можете открыть палитру команд ( Ctrl+ 3или Вид -> Палитра команд ...) и ввести fold all:

введите описание изображения здесь

Йорн Верни
источник
Я думаю, я понял, что происходит ... он сворачивает блок только при наличии [+], например, в python он не сворачивает следующее: github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/…
Хелдер Сепульведа
@HelderSepulveda Ну, это, якобы, сворачивает блочные комментарии, но у python их нет. Код, который вы связали, использует несколько однострочных комментариев.
Йорн Верни
16

ctrl+ k+ 0: Сложить все уровни (пространство имен, класс, метод, блок)

ctrl+ k+ 1: namspace

ctrl+ k+ 2: класс

ctrl+ k+ 3: методы

ctrl+ k+ 4: блоки

ctrl+ k+ [или ]: текущий блок курсора

ctrl+ k+ j: Развернуть

М Комаи
источник
12

Свертывание теперь поддерживается в версии 1.0 :

Ярлыки сворачивания исходного кода

Есть новые действия свертывания, чтобы свернуть области исходного кода на основе их уровня сворачивания.

Есть действия, чтобы сбросить уровень 1 ( Ctrl+ K Ctrl+ 1) до уровня 5 ( Ctrl+ K Ctrl+ 5). Чтобы развернуть, используйте Развернуть все ( Ctrl+ Shift+ Alt+ ]).

Действия сворачивания уровня не применяются к области, содержащей текущий курсор.

У меня была проблема с поиском ]кнопки на моей клавиатуре (норвежская раскладка), и в моем случае это была Åкнопка. (Или две кнопки влево и одна вниз, начиная с кнопки возврата.)

Стиан Стандаль
источник
8

С помощью JavaScript:

//#region REGION_NAME
   ...code here
//#endregion
Рафаэль Грили
источник
4

Начиная с версии 1.3.1 (2016-07-17), Block Collapse гораздо удобнее.

Любая строка, за которой следует строка с отступом, будет иметь символ «-», чтобы разрешить коллапс. Если блок свернут, он будет заменен символом «+», который откроет свернутый блок.

( Ctrl+ Shift+ Alt+ ]) Будет по-прежнему влиять на все блоки, закрывая один уровень. Каждое повторное использование закрывало еще один уровень. ( Ctrl+ Shift+ Alt+ [) Работает противоположным образом.

Ура, развал блока наконец работает с пользой.

Miguelito
источник
В дополнение к этому - если вы превзошли комментарий вокруг области кода, вы можете использовать комментарии для создания пользовательских областей в вашем коде и свертывания целых пользовательских сегментов! Отличная особенность!
Тим Седерквист
По состоянию на 13 июля 2019 года это не работает (
Мартин
3

Элементы управления свертыванием кода внутри редактора для расширения узлов XML-структурированных документов и исходного кода в VsCode

Здесь нет технических советов, только простые настройки предпочтений VsCode.

Мне всегда удавалось показывать элементы управления свертыванием кода в VsCode, перейдя в «Настройки» и выполнив поиск «сворачивание». Теперь просто выберите, чтобы всегда показывать эти элементы управления. Это работает с кодом Typescript и HTML-шаблонами в решении Angular 8, с которым я его тестировал.

Это было протестировано на VsCode Insiders 1.37.0, работающем в ОС Windows 10.

Показывать элементы свертывания кода всегда в VsCode

Торе Аурстад
источник
3

v1.42 добавляет некоторые приятные уточнения к тому, как складки выглядят и функционируют. См. Https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting :

Выделенная подсветка

Сложенные диапазоны теперь легче обнаружить благодаря цвету фона для всех согнутых диапазонов.

сложить блик

Сложите выделение цветом Тема: Темный +

Эта функция контролируется настройкой editor.foldingHighlight, а цвет можно настроить с помощью редактора цветов.foldBackground.

"workbench.colorCustomizations": { "editor.foldBackground": "#355000" }

Складные уточнения

Shift + Clickна индикаторе сворачивания сначала складываются только внутренние диапазоны. Shift + Clickснова (когда все внутренние диапазоны уже сложены) также свернет родительский элемент. Shift + Clickопять все разворачивается.

щелчок сдвига

При использовании команды Fold (kb ( editor.fold))] в уже сложенном диапазоне будет свернут следующий развернутый родительский диапазон.

отметка
источник
2

На Mac это командная клавиша RHS, а Kне левая для команд свертывания кода.

В противном случае левая рука Command ключ будет удалить текущую строку K.

ReaddyEddy
источник
2

Эта функция теперь поддерживается, начиная с Visual Studio Code 1.17 . Чтобы свернуть / свернуть блок кода, просто добавьте теги регионов, такие как //#region my block nameи //#endregionесли кодирование в TypeScript / JavaScript.

Пример:

Регион складной

Мурило Перроне
источник
1

Расширение VSCode: Fold Level , одно нажатие клавиши до нужного уровня.

введите описание изображения здесь

vikyd
источник
0

Я хотел бы, чтобы Visual Studio Code мог обрабатывать:

#region Function Write-Log
Function Write-Log {
    ...
}
#endregion Function Write-Log

Прямо сейчас Visual Studio Code просто игнорирует это и не свернет его. Между тем Notepad ++ и PowerGUI справляются с этим просто отлично.

Обновление: я только что заметил обновление для кода Visual Studio. Это сейчас поддерживается!

Мистер раздражен
источник
0

Примечание. Эти сочетания клавиш работают только так, как ожидается, если вы редактируете файл keybindings.json.

Я не был доволен ярлыками по умолчанию, я хотел, чтобы они работали следующим образом:

  • Сложите: Ctrl+ Alt+]
  • Свернуть рекурсивно: Ctrl+ ⇧ Shift+ Alt+]
  • Сложите все: Ctrl+ kзатем Ctrl+]
  • Развернуть: Ctrl+ Alt+[
  • Развернуть рекурсивно: Ctrl+ ⇧ Shift+ Alt+[
  • Развернуть все: Ctrl+ kпотом Ctrl+[

Чтобы настроить это:

  • Открыть Preferences: Open Keyboard Shortcuts (JSON)( Ctrl+ ⇧ Shift+ p)
  • Добавьте следующий фрагмент в этот файл

    Уже есть пользовательские сочетания клавиш для сворачивания / разворачивания? Тогда вам нужно заменить их.

    {
        "key": "ctrl+alt+]",
        "command": "editor.fold",
        "when": "editorTextFocus && foldingEnabled"
    },
    {
        "key": "ctrl+alt+[",
        "command": "editor.unfold",
        "when": "editorTextFocus && foldingEnabled"
    },
    {
        "key": "ctrl+shift+alt+]",
        "command": "editor.foldRecursively",
        "when": "editorTextFocus && foldingEnabled"
    },
    {
        "key": "ctrl+shift+alt+[",
        "command": "editor.unfoldRecursively",
        "when": "editorTextFocus && foldingEnabled"
    },
    {
        "key": "ctrl+k ctrl+[",
        "command": "editor.unfoldAll",
        "when": "editorTextFocus && foldingEnabled"
    },
    {
        "key": "ctrl+k ctrl+]",
        "command": "editor.foldAll",
        "when": "editorTextFocus && foldingEnabled"
    },
JesusIniesta
источник