Як згорнути розділи коду в коді Visual Studio для Windows?


771

Як скласти або згорнути розділи коду в Visual Studio Code?

Чи підтримується ця функція?

Відповіді:


1351

Розгортання було розгорнуто і зараз реалізоване з Visual Studio Code версії 0.10.11 . Доступні ці комбінації клавіш:

  • Складіть складку у курсорі найпотужнішої області, що не стикається:

    • Ctrl+ Shift+ [у Windows та Linux
    • + + [на macOS
  • Розгортає розгорнуту область за курсором:

    • Ctrl+ Shift+ ]у Windows та Linux
    • + + ]на macOS
  • Згорнути Усі складання всіх регіонів у редакторі:

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

    • Ctrl+ ( K=> J) в Windows та Linux
    • + ( K=> J) на macOS

Список літератури: https://code.visualstudio.com/docs/getstarted/keybindings


2
@DouglasGaskell я зробив ту саму помилку. Це не нуль, а відповідь Майкла Фултона мала Fold Levelбільше сенсу для мене.
Ден Маршалл

1
Не знаю, чи це випуск версії коду, випуск версії Windows чи щось інше, але на моєму ПК він працює лише з Right-Ctrl. Ви можете це відзначити!
Марс

6
Це в основному 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 Code версії 1.12.0, квітень 2017 року, див. Розділ Основне редагування> Розгортання в документах.

Клавішами за замовчуванням є:

Згорнути все: CTRL+ K, CTRL+ 0(нуль)

Рівень складки [n]: CTRL+ K, CTRL+ [n]*

Розгорнути всі: CTRL+ K, CTRL+J

Регіон складок: CTRL+ K, CTRL+[

Розгорнутий регіон: CTRL+ K, CTRL+]

* Рівень складання: для складання всіх, крім самих зовнішніх класів, спробуйте CTRL+ K, CTRL+1

Маки: використовувати замість CTRL(спасибі Prajeet)


Чи зберігає та відновлює стан складок між запуском / вимиканням IDE?
Зелений

Якась причина ctrl+k,ctrl+numпрацює лише на числах вище qwerty, а не на
numpad

2
Перехід на рівень [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 версії 1.22 (не перевіряли версії нижче та вище). Але // #regionі // #endregionпрацює (відмітьте "#" та пробіл в обох). Таким чином, ESLint (якщо ви використовуєте) не відображатиметься помилок, якщо spaced-commentправило увімкнено (тобто не встановлено значення "вимкнено" або 0).
озанмуї

У CSS - це насправді /* #region Foo Bar */і/* #endregion */
tddmo

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

Ця функція доступна в стандартній збірці зараз. Щоб відобразити елементи згортання / розгортання, вам потрібно навести курсор миші на область праворуч від номерів рядків, як показано на цьому знімку екрана:

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


31

Ви повинні додати налаштування користувача:

{
    "editor.showFoldingControls": "always",
    "editor.folding": true,
    "editor.foldingStrategy": "indentation", 
}

"editor.foldingStrategy" був, безумовно, найбільш корисною порадою для мене. Я редагую Рідкий код (Shopify) і не зміг скласти свій код. Як тільки я перейшов з "авто" на "відступ", Кодекс VS переглянув відступ не конкретною мовою, якою я користувався, дуже корисно, дякую
Бенджамін

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 / typecript.
dcsan

1
Перегляньте це: ctrl+shift+alt+[ "Unfold all"Ви написали [замість ]. Виправте мене, якщо я помиляюся.
fWd82

@dcsan також не працює для мене в python / linux. Ctrl + K, Ctrl + 0 (нуль) і Ctrl + K, Ctrl + J , зробити роботу , хоча відповідно до прийнятого відповіддю
Cleary

це не працює
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+ ]).

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

У мене виникла проблема з пошуку ]кнопки на моїй клавіатурі (норвезька розкладка), і в моєму випадку це була Åкнопка. (Або дві кнопки зліва та одна вниз, починаючи з кнопки зворотної області.)



4

Станом на версію 1.3.1 (2016-07-17), Блокувати згортання набагато зручніше.

Будь-який рядок, за яким слідує відступ, має символ "-", щоб дозволити згортання. Якщо блок згорнуто, його буде замінено символом '+', який відкриє згорнутий блок.

( Ctrl+ Shift+ Alt+ ]) Все ще вплине на всі блоки, закриваючи один рівень. Кожне повторне використання закривало ще один рівень. ( Ctrl+ Shift+ Alt+ [) Працює протилежно.

Ура, обвал блоку нарешті працює корисно.


Додавши до цього - якщо ви залишили коментар навколо коду, ви можете використовувати коментарі для створення спеціальних регіонів у вашому коді та згортання цілих спеціальних сегментів! Чудова особливість!
Тім Седерквіст

Це не працює станом на 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 :

Підсвічування діапазону зі складним діапазоном

Складені діапазони тепер простіше виявити завдяки кольору фону для всіх складених діапазонів.

складчасте виділення

Тема кольору кольорів складного кольору: Темний +

Ця функція управляється редактором параметрів.foldingHighlight, а колір можна налаштувати за допомогою редактора кольорів.foldBackground.

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

Складні доопрацювання

Shift + Clickна індикаторі складання спочатку лише складаються внутрішні діапазони. Shift + Clickзнову (коли всі внутрішні діапазони вже складені) також складе батьківський. Shift + Clickзнову розгортає всіх.

клацніть клавішу зсуву

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


2

Для Mac це командний ключ RHS, K , а не ліва для команд складання коду.

В іншому випадку ліва рука Command ключ буде видалити поточний рядок K.


2

Ця функція зараз підтримується, оскільки Visual Studio Code 1.17 . Щоб скласти / згорнути блок коду, просто додайте теги регіону, наприклад, //#region my block nameта //#endregionякщо кодування в TypeScript / JavaScript.

Приклад:

Область складання



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"
    },
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.