【问题标题】:How do I collapse sections of code in Visual Studio Code for Windows?如何折叠 Visual Studio Code for Windows 中的代码部分?
【发布时间】:2015-07-16 01:27:00
【问题描述】:

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

是否支持此功能?

【问题讨论】:

    标签: visual-studio-code


    【解决方案1】:

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

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

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

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

      • Ctrl + (K => 0)(零)在 Windows 和 Linux 上
      • + (K => 0)(在 macOS 上为零)
    • Unfold All在编辑器中展开所有区域:

      • Ctrl + (K => J) 在 Windows 和 Linux 上
      • + (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 按钮的扩展
    【解决方案2】:

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

    默认键是:

    全部折叠:CTRL+KCTRL+0(零)

    折叠级别 [n]:CTRL+K, CTRL+[n]*

    全部展开:CTRL+K, CTRL+J

    折叠区域:CTRL+K, CTRL+[

    展开区域:CTRL+K, CTRL+]

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

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

    【讨论】:

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

    regions 的代码折叠功能已随 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`
    

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

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

    所以输入#,然后输入Ctrl+Space 来查看任何语言的区域标记。


    【讨论】:

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

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

    【讨论】:

    • 问题是,如何同时折叠所有部分,而不是一个一个。有没有办法不走捷径?
    • 为此您必须使用快捷方式
    【解决方案5】:

    您应该添加用户设置:

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

    【讨论】:

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

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

    ctrl + k + 1 : 命名空间

    ctrl + k + 2 : 类

    ctrl + k + 3 : 方法

    ctrl + k + 4 : 块

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

    ctrl + k + j : 展开

    【讨论】:

      【解决方案7】:

      折叠/展开的默认快捷键是:

      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 确实可以按照接受的答案工作
      • 对于非美国键盘[] 位于 退格键 键 (?) 的左侧。
      【解决方案8】:

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

      【讨论】:

      • 我想我知道会发生什么......只有当有 [+] 可用时它才会折叠块,例如在 python 中它不会折叠以下内容:github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/…
      • @HelderSepulveda 好吧,它应该折叠块 cmets,但 python 没有这些。您链接的代码使用多个单行 cmets。
      【解决方案9】:

      release 1.0 现在支持折叠:

      源码折叠快捷键

      有新的折叠动作来折叠源代码区域,基于 他们的折叠水平。

      有将级别 1 (Ctrl+K Ctrl+1) 折叠到级别 5 ( Ctrl+K Ctrl+5)。要展开,请使用全部展开 (Ctrl+Shift+Alt+])。

      关卡折叠动作不适用于包含 当前光标。

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

      【讨论】:

        【解决方案10】:

        使用 JavaScript:

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

        【讨论】:

          【解决方案11】:

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

          例子:

          【讨论】:

            【解决方案12】:

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

            折叠范围突出显示

            由于背景颜色,现在折叠范围更容易发现 对于所有折叠范围。

            折叠高亮颜色主题:深色+

            该功能由设置 editor.foldingHighlight 和 可以使用颜色 editor.foldBackground 自定义颜色。

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

            折叠优化

            折叠指示器上的Shift + Click首先只折叠内部 范围。 Shift + Click 再次(当所有内部范围都已折叠时) 也会折叠父母。 Shift + Click 再次展开一切。

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

            【讨论】:

            • 哇,这太棒了,对于 vue js option api
            【解决方案13】:

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

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

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

            【讨论】:

              【解决方案14】:

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

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

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

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

              【讨论】:

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

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

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

              【讨论】:

                【解决方案16】:

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

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

                【讨论】:

                  【解决方案17】:

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

                  【讨论】:

                    【解决方案18】:

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

                    【讨论】:

                      【解决方案19】:

                      我希望 Visual Studio Code 可以处理:

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

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

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

                      【讨论】:

                        【解决方案20】:

                        注意:这些快捷方式只有在您编辑 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)
                        • 将以下 sn-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"
                            },
                        

                        【讨论】:

                          【解决方案21】:

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

                          【讨论】:

                            【解决方案22】:

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

                            "editor.folding": false
                            

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

                            【讨论】:

                              猜你喜欢
                              • 2018-07-31
                              • 1970-01-01
                              • 2021-05-09
                              • 2015-09-29
                              • 2021-08-21
                              • 1970-01-01
                              • 1970-01-01
                              • 2017-09-14
                              相关资源
                              最近更新 更多