如何折叠 Visual Studio 代码 Windows 中的代码段?

How do I collapse sections of code in Visual Studio Code for Windows?

如何折叠或折叠 Visual Studio 代码中的代码段?

是否支持此功能?

Folding has been rolled out and is now implemented since Visual Studio Code version 0.10.11。有这些可用的键盘快捷键:

  • Fold 折叠光标处最里面未折叠的区域:

    • Ctrl + Shift + [ 在 Windows 和 Linux
    • + + [ macOS
  • 展开展开光标处的折叠区域:

    • Ctrl + Shift + ] 在 Windows 和 Linux
    • + + ] macOS
  • 全部折叠 折叠编辑器中的所有区域:

    • Ctrl + K, Ctrl + 0(零)在 Windows 和 Linux
    • + K, +0(零)在 macOS
  • 全部展开 在编辑器中展开所有区域:

    • Ctrl + K, Ctrl + J 在 Windows 和 Linux
    • + K, + J 在 macOS 上

参考文献: https://code.visualstudio.com/docs/getstarted/keybindings

collapse/extend 的默认快捷方式是:

Ctrl + Shift + [ : "Fold"

Ctrl + Shift + Alt + [ : "Fold all"

Ctrl + Shift + ] : "Unfold"

Ctrl + Shift + Alt + ] : "Unfold all"

或转到 keybindings.json 并根据需要进行更改。

例如:

{
    "key": "cmd+k cmd+m",
    "command": "editor.foldAll",
    "when": "editorFocus"
},
{
    "key": "cmd+m cmd+k",
    "command": "editor.unfoldAll",
    "when": "editorFocus"
},

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.

我在键盘(挪威语布局)上找不到 ] 按钮,在我的例子中是 Å 按钮。 (或者从退格按钮开始向左两个按钮和一个向下按钮。)

截至 Visual Studio 代码版本 1.12.0,2017 年 4 月,请参阅文档中的 Basic Editing > Folding 部分。

默认键是:

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+]

*折叠级别:除了最外面的 类 之外的所有折叠,尝试 CTRL+K, CTRL+1

Mac:使用 而不是 CTRL(感谢 Prajeet)

自1.3.1版本(2016-07-17)起,Block Collapse更加方便。

缩进行后的任何行都会有一个“-”字符以允许折叠。如果块被折叠,它将被一个“+”字符替换,这将打开折叠的块。

(Ctrl + Shift + Alt + ]) 仍然会影响所有块,关闭一层。每次重复使用都会关闭一个级别。 (Ctrl + Shift + Alt + [)以相反的方式工作。

万岁,块崩溃终于有用了。

此功能现已在标准版本中提供。要显示 collapse/expand 控件,您需要将鼠标悬停在行号右侧的区域上,如以下屏幕截图所示:

在Mac上,是RHS命令键,K,不是代码折叠命令的左边.

否则左手Command键会删除当前行,K.

regions 的代码折叠已随 v1.17 一起推出。 Folding by regions documentation. And v1.19 and 1.23.

[一般可以加一个space,比如// 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  
sql                    --#region and --#endregion

重要提示:如果您没有在列表中看到您的语言::

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.

因此键入 #,然后键入 Ctrl+Space 以查看任何语言的区域标记。


Visual Studio Code 1.17 起,现在支持此功能。要 fold/collapse 您的代码块,只需添加区域标签,例如 //#region my block name//#endregion 如果在 TypeScript/JavaScript 中编码。

示例:

与JavaScript:

//#region REGION_NAME
   ...code here
//#endregion

您应该添加用户设置:

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

如果 none 的快捷方式有效(就像我一样),作为解决方法,您还可以打开命令面板 (Ctrl + 3 或查看 -> 命令面板...) 并输入 fold all:

我希望 Visual Studio 代码可以处理:

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

现在Visual Studio代码只是忽略它,不会折叠它。 同时,Notepad++ 和 PowerGUI 处理得很好。

更新:我刚刚注意到 Visual Studio 代码的更新。现在支持!

ctrl + k + 0 : 折叠所有层级 (namespace , class , 方法 , 块)

ctrl + k + 1 : 命名空间

ctrl + k + 2 : class

ctrl + k + 3 : 方法

ctrl + k + 4 : 方块

ctrl + k + [] : 当前光标块

ctrl + k + j : 展开

VSCode扩展名:Fold Level,一键折叠到你想要的级别

这里没有技术提示,只是对VsCode的偏好进行简单的调整。

通过转到首选项并搜索 'folding',我设法始终在 VsCode 中显示代码折叠控件。现在只需 select 即可始终显示这些控件。这适用于我测试过的 Angular 8 解决方案中的 Typescript 代码和模板 HTML。

这是使用 VsCode Insiders 1.37.0 运行 在 Windows 10 OS.

上测试的

v1.42 正在对折叠的外观和功能进行一些不错的改进。见 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.

Note: these shortcuts only work as expected if you edit your 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)
  • 将以下代码片段添加到该文件

    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"
    },

或者,如果您想删除 折叠按钮,以获得额外的 space:

"editor.folding": false

(添加到您的 settings.json 文件)

这是最常用的 VS 代码默认键盘映射。并且您可以轻松地通过自己的键盘映射进行自定义。

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

只需按 ctrl + shift + p,然后输入 'fold'。 所有关于 (un)fold 的键绑定将被显示。 如果 ctrl k 不起作用,可能是因为 vim 扩展名覆盖了密钥。 在这种情况下,您应该修改 settings.json (按 ctrl + shift + p,然后键入 'settings' )为

"vim.handleKeys": {
  "<C-k>": false,
},

到fold/unfold当前块使用(ctrl+k)+(ctrl+l)

这是用于折叠和展开代码的最新built-in(默认)键盘快捷键

vscode Keyboard shortcut

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:但在某些情况下,您的 vs 代码扩展程序或用户会更改键盘绑定(快捷方式)。像这样检查的最佳选择

  1. view->command palette OR cntrl+shift+p
  2. 键入“折叠”。它会提示折叠和展开以及快捷方式。您可以键入该快捷方式而不是 command-palette

例如:

全部折叠

全部展开