PyCharm 2018.1 Help

Folding Code Elements

You can collapse (fold) code fragments reducing them to a single visible line. In this way, you can hide the details that, at the moment, seem unimportant. If and when necessary, the folded code fragments can be expanded (unfolded).

Folded code fragments, normally, are shown as shaded ellipses (foldedFragment).

py foldingGeneral

If the folded code block contains errors, PyCharm highlights the folded fragment in red.

Code folding means

You can collapse and expand code fragments by using:

  • Code folding toggles (foldingMinusStart, foldingMinusEnd or foldingPlus). These toggles are shown in the editor to the left of the corresponding folding regions. If a region is unfolded, foldingMinusStart indicates the beginning of the region while foldingMinusEnd is located at its end. For folded regions, the toggle is shown as foldingPlus.

    If you hold the Alt key and click foldingMinusStart, foldingMinusEnd or foldingPlus, the region is collapsed or expanded recursively, i.e. along with all its subordinate regions.

  • Commands of the Folding menu and associated keyboard shortcuts. The Folding menu can be accessed from the main menu bar (Code | Folding), or as a context menu in the editor. The shortcuts are shown right in the menu. See Commands of the Folding menu and associated shortcuts.
  • Folded fragments themselves: click foldedFragment to expand the corresponding fragment. See also, Viewing folded code fragments.

Folding predefined and custom regions

You can fold and unfold:

  • Lists and dictionaries.
  • Code blocks, i.e. code under the keywords class, def, while, if, etc.
  • Consecutive commented lines.
  • Predefined regions that correspond import declarations, method bodies, documentation comments, etc. The predefined regions, roughly, correspond to the ones listed under Collapse by default on the Editor | General | Code Folding page of PyCharm settings (Ctrl+Alt+S).

    For the predefined regions, the folding toggles are available right away, without the need to perform any additional actions.

  • Any selected code fragment. A custom folding region for a selection is created and removed by means of the Code | Folding | Fold Selection/ Remove Region command (Ctrl+.).
  • Regions surrounded by corresponding commented folding markers (e.g. //<editor-fold desc="Description">...//</editor-fold>). See Using code folding comments.

Commands of the Folding menu and associated shortcuts

The Folding menu can be accessed from the main menu bar (Code | Folding), or as a context menu in the editor.

CommandShortcutDescription
Expand Ctrl+NumPad Plus Expand the current collapsed fragment
Collapse Ctrl+NumPad - Collapse the current folding region
Expand Recursively Ctrl+Alt+NumPad Plus Expand the current folded fragment and all the subordinate collapsed folding regions within that fragment
Collapse Recursively Ctrl+Alt+NumPad - Collapse the current folding region and all the subordinate folding regions within it
Expand All Ctrl+Shift+NumPad Plus Expand all collapsed fragments within the selection, or, if nothing is selected, expand all the collapsed fragments in the current file
Collapse All Ctrl+Shift+NumPad - Collapse all folding regions within the selection, or, if nothing is selected, collapse all the folding regions in the current file
Expand to level | 1, 2, 3, 4 or 5 Ctrl+NumPad *, 1
Ctrl+NumPad *, 2
Ctrl+NumPad *, 3
Ctrl+NumPad *, 4
Ctrl+NumPad *, 5
Expand the current fragment and all the nested fragments up to the specified level
Expand all to level | 1, 2, 3, 4 or 5 Ctrl+Shift+NumPad *, 1
Ctrl+Shift+NumPad *, 2
Ctrl+Shift+NumPad *, 3
Ctrl+Shift+NumPad *, 4
Ctrl+Shift+NumPad *, 5
Expand all the collapsed fragments in the file up to the specified nesting level
Expand doc comments Expand all documentation comments in the current file
Collapse doc comments Collapse all documentation comments in the current file
Fold Selection / Remove region Ctrl+. Collapse the selected fragment and create a custom folding region for it to make it "foldable" / Expand the current fragment and remove the corresponding custom folding region to make the fragment "unfoldable"

Specifying code folding preferences

You can specify:

  • Whether the code folding toggles should be shown.
  • Which folding regions should be collapsed by default.

The corresponding settings are on the Editor | General | Code Folding page of PyCharm settings (Ctrl+Alt+S).

For more information, see Code Folding page.

Viewing folded code fragments

To see the contents of a folded fragment, point to the ellipsis foldedFragment that indicates that fragment.

py foldingPopup

Viewing the beginning of a folding region

To see the beginning of a folding region - if it's not currently visible - point to the folding toggle at the end of that region.

py view invisible code

Using code folding comments

Supported folding comments

You can create custom folding regions by surrounding code fragments with commented lines n accordance with NetBeans style or Visual Studio style.

NetBeans style

For non-Python files:

//<editor-fold desc="Description"> ... //</editor-fold>

For Python files:

#<editor-fold desc="Description"> ... #</editor-fold>

Visual Studio style

For non-Python files:

//region Description ... //endregion

For Python files:

#region Description ... #endregion

Once you have chosen the style for a file, don't use the other style in that file.

Surrounding a fragment with folding comments

  1. Select the code fragment of interest.
  2. Select Code | Surround With or pressCtrl+Alt+T.
  3. Select the folding comments to be used.
    py customFolding1
  4. Specify the fragment description.
    py customFolding2

    Now if you collapse the fragment, the description you have specified is shown in place of the code.

You can navigate to custom folding regions that were formed by surrounding code fragments with the corresponding commented folding markers:

  1. Select Navigate | Custom Folding or press Ctrl+Alt+..
  2. Select the target folding region. (The regions in the list are identified by their descriptions.)
Last modified: 23 July 2018

See Also

Getting Started: