How do I fold or collapse sections of code in Visual Studio Code?
Is this feature supported?
How do I fold or collapse sections of code in Visual Studio Code?
Is this feature supported?
Folding has been rolled out and is now implemented since Visual Studio Code version 0.10.11. There are these keyboard shortcuts available:
Fold folds the innermost uncollapsed region at the cursor:
Unfold unfolds the collapsed region at the cursor:
Fold All folds all regions in the editor:
Unfold All unfolds all regions in the editor:
References: https://code.visualstudio.com/docs/getstarted/keybindings
CTRL + ,
to bring up Settings, enter folding in 'search settings' box and you'll see the Show Folding Controls option there. –
Uptrend F1
and type Fold or Unfold –
Habitforming 434803
Raw lines https://gist.github.com/alemens/4b8f14c100785456cebdbadfde0532d9
into Visual Studio Code. And then you try to Fold All as explained above. You will see it will not fold all properly in fact from line 375190
the code result unfolded. Do you know why? –
Chokebore Ctrl + Shift + '
–
Bohemian Ctrl-K Ctrl-]
and Ctrl-K Ctrl-[
for recursive unfold/fold. Or maybe on the time of writing VSCode didn't support it and added it the later versions. TLDR: the answer needs an update! –
Phenolphthalein As of Visual Studio Code version 1.12.0, April 2017, see Basic Editing > Folding section in the docs.
The default keys are:
Fold All: CTRL+K, CTRL+0 (zero)
Fold Level [n]: CTRL+K, CTRL+[n]*
Unfold All: CTRL+K, CTRL+J
Fold Region: CTRL+K, CTRL+[
Unfold Region: CTRL+K, CTRL+]
*Fold Level: to fold all but the most outer classes, try CTRL+K, CTRL+1
Macs: use ⌘ instead of CTRL (thanks Prajeet)
ctrl+k,ctrl+num
only works on numbers above qwerty not on numpad –
Hyperacidity See https://mcmap.net/q/46280/-how-do-you-hide-arbitrary-section-of-code-in-vs-code for the command and demo.
Create Manual Folding Range from Selection
editor.createFoldingRangeFromSelection
This is bound to the above create command: Ctrl+K Ctrl+,
Remove Manual Folding Ranges
editor.removeManualFoldingRanges
This is bound to the above remove command: Ctrl+K Ctrl+.
Code folding by regions has arrived with v1.17. Folding by regions documentation. And v1.19 and 1.23.
[Generally you can add a space, for example // region and // endregion
to //region and //endregion
and it will also work.]
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
sql --#region and --#endregion
Important: If you don't see your language in the list ::
Each language also has snippets available for the markers. Type '#' and invoke code completion to see them. To have region markers configured for your language, contact the language extension provider.
So type #
and then Ctrl+Space to see the region markers for any language.
// region
and // endregion
are not working with VS Code version 1.22 (haven't tested versions below or above that though). But // #region
and // #endregion
works (note the '#' and space in both). This way ESLint (if you are using) won't show error if spaced-comment
rule is on (i.e. not set to 'off' or 0). –
Mixup /* #region Foo Bar */
and /* #endregion */
–
Insectivorous //region
and //endregion
are for JavaScript. –
Beggarweed <!-- #region --> elements <!-- #endregion -->
. It displays the text following the #region on the folded section. It properly folds from the current #region to the corresponding #endregion, even if there are others nested - just like parentheses in any equation. It remembers the fold setting for nested regions. Ctrl+k+Ctrl+[ and Ctrl+k+Ctrl+] close/open the folds correctly at the cursor. (which seems a little backwards to me, but whatevah) Great stuff! –
Sung This feature is available in the standard build now. To make the collapse/expand controls appears, you need to mouse over the area just to the right of the line numbers as shown in this screenshot:
ctrl + k + 0 : Fold all levels (namespace , class , method , block)
ctrl + k + 1 : namspace
ctrl + k + 2 : class
ctrl + k + 3 : methods
ctrl + k + 4 : blocks
ctrl + k + [ or ] : current cursor block
ctrl + k + j : UnFold
CTRL
+ K
, CTRL
+ 0
(not CTRL
+ K
+ 0
). The convention when depicting a sequence of keypress combinations is to show keys pressed together with plus, then sequence combinations with commas. –
Monoceros You should add user settings:
{
"editor.showFoldingControls": "always",
"editor.folding": true,
"editor.foldingStrategy": "indentation",
}
The default shortcut for collapse/extend are:
Ctrl + Shift + [ : "Fold"
Ctrl + Shift + Alt + [ : "Fold all"
Ctrl + Shift + ] : "Unfold"
Ctrl + Shift + Alt + ] : "Unfold all"
Or go to keybindings.json and change as you wish.
For example:
{
"key": "cmd+k cmd+m",
"command": "editor.foldAll",
"when": "editorFocus"
},
{
"key": "cmd+m cmd+k",
"command": "editor.unfoldAll",
"when": "editorFocus"
},
ctrl+shift+alt+[ "Unfold all"
You wrote [
instead of ]
. Correct me if I am wrong. –
Pecan [
and ]
are at the left of the backspace key (🔙). –
Ba If none of the shortcuts are working (like for me), as a workaround you can also open the command palette (Ctrl + 3 or View -> Command Palette...) and type in fold all
:
Collapsing is now supported in release 1.0:
Source Code Folding Shortcuts
There are new folding actions to collapse source code regions based on their folding level.
There are actions to fold level 1 (Ctrl+K Ctrl+1) to level 5 (Ctrl+K Ctrl+5). To unfold, use Unfold All (Ctrl+Shift+Alt+]).
The level folding actions do not apply to region containing the current cursor.
I had a problem finding the ]
button on my keyboard (Norwegian layout), and in my case it was the Å
button. (Or two buttons left and one down starting from the backspace button.)
With JavaScript:
//#region REGION_NAME
...code here
//#endregion
This is the latest built-in(default) keyboard shortcuts for folding and unfolding the code
Ctrl+Shift+[ Fold (collapse) region
Ctrl+Shift+] Unfold (uncollapse) region
Ctrl+K Ctrl+[ Fold (collapse) all subregions
Ctrl+K Ctrl+] Unfold (uncollapse) all subregions
Ctrl+K Ctrl+0 Fold (collapse) all regions
Ctrl+K Ctrl+J Unfold (uncollapse) all
Nb: But in some cases, your vs code extension or user will alter the keyboard binding(shortcut). So best option that Checks like this
eg:
Fold All
UnFold All
Just press ctrl + shift + p
, and then type 'fold'.
all keybinds about (un)fold will be shown.
If ctrl k
does not work, probably it's because the vim extension overrides the key.
in this case, you should modify settings.json (press ctrl + shift + p
, and then type 'settings' ) with
"vim.handleKeys": {
"<C-k>": false,
},
This feature is now supported, since Visual Studio Code 1.17. To fold/collapse your code block, just add the region tags, such as //#region my block name
and //#endregion
if coding in TypeScript/JavaScript.
Example:
Here is the most common useful default keymap of VSCode. And you cab easily customize them with your own keymap. CTRL + K
and then:
Fold All: CTRL + 0
Unfold All: CTRL + J
Fold Region: CTRL + [
Unfold Region: CTRL + ]
Fold Level 1: CTRL+ 1
Fold Level 2: CTRL+ 2
Fold Level 3: CTRL+ 3
Fold Level 1: CTRL+ 4
No technical tips here, just simple adjustments of the preferences of VsCode.
I managed to show code folding controls always in VsCode by going to Preferences and searching for 'folding'. Now just select to always show these controls. This works with the Typescript code and HTML of templates in the Angular 8 solution I tested it with.
This was tested with VsCode Insiders 1.37.0 running on a Windows 10 OS.
v1.42 is adding some nice refinements to how folds look and function. See https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting:
Folded Range Highlighting
Folded ranges now are easier to discover thanks to a background color for all folded ranges.
Fold highlight color Theme: Dark+
The feature is controled by the setting editor.foldingHighlight and the color can be customized with the color editor.foldBackground.
"workbench.colorCustomizations": { "editor.foldBackground": "#355000" }
Folding Refinements
Shift + Click
on the folding indicator first only folds the inner ranges.Shift + Click
again (when all inner ranges are already folded) will also fold the parent.Shift + Click
again unfolds all.
When using the Fold command (kb(
editor.fold
))] on an already folded range, the next unfolded parent range will be folded.
As of version 1.3.1 (2016-07-17), Block Collapse is much more convenient.
Any line followed by an indented line will have a '-' character to allow collapse. If the block is collapsed, it will then be replaced by a '+' character that will open the collapsed block.
The (Ctrl + Shift + Alt + ]) will still affect all blocks, closing one level. Each repeated use closed one more level. The (Ctrl + Shift + Alt + [) works in the opposite way.
Hooray, block collapse finally works usefully.
Fold All (Ctrl+K Ctrl+0) folds all regions in the editor.
Unfold All (Ctrl+K Ctrl+J) unfolds all regions in the editor.
Fold Level X (Ctrl+K Ctrl+2 for level 2) folds all regions of level X, except the region at the current cursor position.
VSCode extension: Fold Level, one key fold to the level you want.
Note: these shortcuts only work as expected if you edit your keybindings.json
I wasn't happy with the default shortcuts, I wanted them to work as follow:
To set it up:
Preferences: Open Keyboard Shortcuts (JSON)
(Ctrl + ⇧ Shift + p)Already have custom keybindings for fold/unfold? Then you'd need to replace them.
{
"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"
},
On a Mac, it's the RHS Command key, ⌘K, not the left for the code folding commands.
Otherwise the left hand Command key will delete the current line, ⌘K.
I wish Visual Studio Code could handle:
#region Function Write-Log
Function Write-Log {
...
}
#endregion Function Write-Log
Right now Visual Studio Code just ignores it and will not collapse it. Meanwhile Notepad++ and PowerGUI handle this just fine.
Update: I just noticed an update for Visual Studio Code. This is now supported!
Or, if you want to remove the folding buttons, for extra space:
"editor.folding": false
(add to your settings.json
file)
If you are editing a large file, it might be handy to increase Folding Maximum Regions
setting, since by default it's limited to 5000.
"editor.foldingMaximumRegions": 5000
More info here: region extensionhttps://marketplace.visualstudio.com/items?itemName=maptz.regionfolder
After installing the extension and using python, it works like this:
# region ARBITRARY_REGION_NAME
code goes here...
# endregion
Also, selecting the desired area, use Ctrl+M+Ctrl+R.
(that is: first hit and hold Ctrl, then hit m, let go m, then hit r, and let go all)
If you encountered the issue where your class name is collapsed into due to ◦◦◦
or ...
, it might be caused by Tailwind related extensions like this:
The extension will collapse the class
because tailwind CSS can be repetitive and long, so the extension will help to fold those classes from something like:
<div class="some class names here"></div>
Into:
<div class="..."></div>
VSCode extensions can modify the behaviour of codes such as the formatting and display, so it will be better to review your Extensions list and ensure none of them caused a side effect that is unexpected. Disable them and try again to see whether it solved your issue.
© 2022 - 2024 — McMap. All rights reserved.
Fold Level
answer made more sense to me. – Henkel