ChatGPT解决这个技术问题 Extra ChatGPT

如何折叠 Visual Studio Code for Windows 中的代码部分?

如何折叠或折叠 Visual Studio Code 中的代码部分?

是否支持此功能?


C
Community

Folding 已推出,现在从 Visual Studio Code version 0.10.11 开始实施。有以下可用的键盘快捷键:

Fold 折叠光标处最里面的未折叠区域: Ctrl + Shift + [ 在 Windows 和 Linux 上 ⌥ + ⌘ + [ 在 macOS 上

Ctrl + Shift + [ 在 Windows 和 Linux 上

⌥ + ⌘ + [ 在 macOS 上

Unfold 在光标处展开折叠区域: Ctrl + Shift + ] 在 Windows 和 Linux 上 ⌥ + ⌘ + ] 在 macOS 上

Ctrl + Shift + ] 在 Windows 和 Linux 上

⌥ + ⌘ + ] 在 macOS 上

Fold All 在编辑器中折叠所有区域:Windows 和 Linux 上的 Ctrl + K、Ctrl + 0(零)⌘ + K、macOS 上的⌘ +0(零)

Windows 和 Linux 上的 Ctrl + K、Ctrl + 0(零)

⌘ + K,⌘ +0(零)在 macOS 上

Unfold All 在编辑器中展开所有区域:Ctrl + K、Ctrl + J 在 Windows 和 Linux 上 ⌘ + K、⌘ + J 在 macOS 上

Windows 和 Linux 上的 Ctrl + K、Ctrl + J

⌘ + K,⌘ + J 在 macOS 上

参考资料: https://code.visualstudio.com/docs/getstarted/keybindings


@DouglasGaskell 我犯了同样的错误。这是一个零而不是一个 o,Michael Fulton 的 Fold Level 答案对我来说更有意义。
不知道是代码版本问题、Windows 版本问题还是其他问题,但在我的 PC 上,它仅适用于 Right-Ctrl。您可能需要注意这一点!
它基本上是 Ctrl+K, Ctrl+[n] 其中 n 是您要折叠的级别数。因此,如果您在 VSCode 上寻找 VS(C#) 的 Ctrl+M、Ctrl+O 等价物,则应为 Ctrl+K、Ctrl+3。
@Preza8 按 F1 并输入 FoldUnfold
@Preza8 它还向您显示当前分配的键绑定,如果没有分配,您可以自己分配。此外,可能会有一个扩展来添加自定义 GUI 按钮
C
Community

自 2017 年 4 月的 Visual Studio Code 版本 1.12.0 起,请参阅文档中的 Basic Editing > Folding 部分。

默认键是:

全部折叠:CTRL+K、CTRL+0(零) 折叠级别 [n]:CTRL+K、CTRL+[n]* 全部展开:CTRL+K、CTRL+J 折叠区域:CTRL+K、CTRL+[ 展开区域: CTRL+K, CTRL+]

*折叠级别:要折叠除最外层之外的所有类,请尝试 CTRL+K、CTRL+1

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


它是否保存和恢复 IDE 启动/关闭之间的折叠状态?
某些原因 ctrl+k,ctrl+num 仅适用于 qwerty 以上的数字而不适用于小键盘
折叠到级别 [n] 不会折叠光标所在的部分。这总是让我觉得它没有达到我的预期。是否有关闭此行为的选项?
ctrl+k 杀线
好兄弟啊!!!!!!
M
Mark

另请参阅从 Insiders v1.70 开始折叠任意代码行的能力。那就是您选择的任何行都可以折叠!

有关命令和演示,请参见 https://stackoverflow.com/a/72954133/836330

Fold Selected Lineseditor.foldSelectedCtrl+K Ctrl+.

代码折叠 区域 已随 v1.17 发布。 Folding by regions documentation。还有 v1.191.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  
sql                    --#region and --#endregion

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

每种语言还具有可用于标记的片段。输入“#”并调用代码完成来查看它们。要为您的语言配置区域标记,请联系语言扩展提供商。

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


// region// endregion 不适用于 VS Code 1.22 版(但尚未测试低于或高于该版本的版本)。但 // #region// #endregion 有效(注意两者中的 '#' 和空格)。这样,如果 spaced-comment 规则打开(即未设置为“关闭”或 0),ESLint(如果您正在使用)将不会显示错误。
在 CSS 中,它实际上是 /* #region Foo Bar *//* #endregion */
@ozanmuyes 它取决于文件类型(语言)。 //region//endregion 用于 JavaScript。
如果您安装 Microsoft 的 docker ext:marketplace.visualstudio.com/…,则在 Docker .yaml 文件中也能很好地工作
v1.41:我尝试了 XML,它成功了! <!-- #region --> elements <!-- #endregion -->。它显示折叠部分上#region 之后的文本。它正确地从当前#region 折叠到相应的#endregion,即使有其他嵌套 - 就像任何等式中的括号一样。它记住嵌套区域的折叠设置。 Ctrl+k+Ctrl+[ 和 Ctrl+k+Ctrl+] 在光标处正确关闭/打开折叠。 (这对我来说似乎有点倒退,但是whatevah)很棒的东西!
P
Peter Mortensen

此功能现在在标准版本中可用。要显示折叠/展开控件,您需要将鼠标悬停在行号右侧的区域上,如下图所示:

https://i.stack.imgur.com/8XhHa.png


问题是,如何同时折叠所有部分,而不是一个一个。有没有没有捷径的方法?
为此,您必须使用快捷方式
G
Gama11

您应该添加用户设置:

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

“editor.foldingStrategy”是迄今为止对我最有用的提示。我正在编辑 Liquid 代码 (Shopify),但无法折叠我的代码。一旦我从“自动”切换到“缩进”,VS Code 就会查看缩进而不是我使用的特定语言,非常有帮助,谢谢
M
Misha Akopov

ctrl + k + 0 :折叠所有级别(命名空间、类、方法、块)

ctrl + k + 1 :命名空间

ctrl + k + 2 :类

ctrl + k + 3 :方法

ctrl + k + 4 :块

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

ctrl + k + j :展开


它实际上是成对的按键组合,而不是单个组合。例如:CTRL + KCTRL + 0(不是 CTRL + K + 0)。描述一系列按键组合时的惯例是显示按键与加号一起按下,然后是逗号组合。
G
Gama11

折叠/扩展的默认快捷方式是:

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/typescript 上对我不起作用。
请查看以下内容:ctrl+shift+alt+[ "Unfold all"您写的是 [ 而不是 ]。如果我错了,请纠正我。
@dcsan 它在 python/linux 中也不适用于我。 Ctrl+K、Ctrl+0(零)和 Ctrl+K、Ctrl+J 确实可以按照接受的答案工作
对于非美国键盘[] 位于 退格 键 (🔙) 的左侧。
J
Jorn Vernee

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

https://i.stack.imgur.com/ADNTf.png


我想我知道会发生什么......只有当有 [+] 可用时它才会折叠块,例如在 python 中它不会折叠以下内容:github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/…
@HelderSepulveda 好吧,据说它会折叠块注释,但 python 没有这些。您链接的代码使用多个单行注释。
P
Peter Mortensen

release 1.0 现在支持折叠:

源代码折叠快捷方式 有新的折叠操作可以根据折叠级别折叠源代码区域。有将级别 1 (Ctrl+K Ctrl+1) 折叠到级别 5 (Ctrl+K Ctrl+5) 的操作。要展开,请使用全部展开 (Ctrl+Shift+Alt+])。级别折叠操作不适用于包含当前光标的区域。

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


G
Gama11

使用 JavaScript:

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

b
bleuthoot

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

例子:

https://code.visualstudio.com/assets/updates/1_17/region-folding.gif


u
user3113626

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

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

https://i.stack.imgur.com/jT7iv.png


l
lava

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

vscode Keyboard shortcut

https://i.stack.imgur.com/DxR0i.png

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

注意:但在某些情况下,您的 vs 代码扩展或用户会更改键盘绑定(快捷方式)。所以像这样检查的最佳选择

view->command palette OR cntrl+shift+p type "fold" 。它会建议折叠和展开以及快捷方式。您可以键入该快捷方式而不是命令面板

https://i.stack.imgur.com/B7RpQ.png

例如:

全部折叠

https://i.stack.imgur.com/tcfgY.gif

展开全部

https://i.stack.imgur.com/HMxe5.gif


M
Mark

v1.42 对折叠的外观和功能进行了一些很好的改进。请参阅https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting

折叠范围突出显示折叠范围现在更容易发现,这要归功于所有折叠范围的背景颜色。

https://i.stack.imgur.com/LEPVx.png

折叠高亮颜色主题:Dark+ 该功能由设置 editor.foldingHighlight 控制,颜色可以使用颜色 editor.foldBackground 自定义。 "workbench.colorCustomizations": { "editor.foldBackground": "#355000" } 折叠优化 Shift + 单击折叠指示器首先只折叠内部范围。 Shift + Click 再次(当所有内部范围都已折叠时)也将折叠父级。 Shift + 单击再次展开全部。

https://i.stack.imgur.com/3wzq1.gif

在已经折叠的范围上使用折叠命令 (kb(editor.fold))] 时,下一个展开的父范围将被折叠。


哇,这太棒了,对于 vue js option api
T
Tore Aurstad

https://i.stack.imgur.com/hFXFG.gif

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

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

这是在 Windows 10 操作系统上运行的 VsCode Insiders 1.37.0 测试的。

https://i.stack.imgur.com/77f81.gif


P
Peter Mortensen

从版本 1.3.1 (2016-07-17) 开始,Block Collapse 更加方便。

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

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

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


除此之外 - 如果您在代码区域周围突出注释,您可以使用注释在代码中构建自定义区域并折叠整个自定义段!很棒的功能!
这在 2019 年 7 月 13 日不起作用。是否有任何其他 keboard 快捷方式可以替代它? (一次折叠/展开一个级别?{
G
General Grievance

这是 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

要使用这些,首先按 ctrol + k 例如要折叠所有按 ctrol + k, ctrol + 0
v
vikyd

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

https://i.stack.imgur.com/w4wuJ.gif


J
JesusIniesta

注意:这些快捷方式只有在您编辑 keybindings.json 时才能按预期工作

我对默认快捷方式不满意,我希望它们按以下方式工作:

折叠:Ctrl + Alt + ]

递归折叠: Ctrl + ⇧ Shift + Alt + ]

全部折叠: Ctrl + k 然后 Ctrl + ]

展开:Ctrl + Alt + [

递归展开:Ctrl + ⇧ Shift + Alt + [

展开全部:Ctrl + k 然后 Ctrl + [

要设置它:

打开首选项:打开键盘快捷键 (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"
    },

m
mahmoud elgml

折叠/展开当前块使用 (ctrl+k)+(ctrl+l)


P
Peter Mortensen

在 Mac 上,它是 RHS 命令键,⌘K,而不是代码折叠命令的左侧。

否则,左手 Command 键将删除当前行,⌘K。


P
Peter Mortensen

我希望 Visual Studio Code 可以处理:

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

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

更新:我刚刚注意到 Visual Studio Code 的更新。现在支持这个!


l
lenooh

或者,如果您想移除折叠按钮,以获得额外空间:

"editor.folding": false

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