¿Cómo colapso secciones de código en Visual Studio Code para Windows?


772

¿Cómo doblo o contraigo secciones de código en Visual Studio Code?

¿Esta función es compatible?

Respuestas:


1353

El plegado se ha implementado y ahora se implementa desde Visual Studio Code versión 0.10.11 . Existen estos atajos de teclado disponibles:

  • Doblar pliega la región no plegada más interna en el cursor:

    • Ctrl+ Shift+ [en Windows y Linux
    • + + [en macOS
  • Desplegar despliega la región contraída en el cursor:

    • Ctrl+ Shift+ ]en Windows y Linux
    • + + ]en macOS
  • Fold All dobla todas las regiones en el editor:

    • Ctrl+ ( K=> 0) (cero) en Windows y Linux
    • + ( K=> 0) (cero) en macOS
  • Desplegar todo despliega todas las regiones en el editor:

    • Ctrl+ ( K=> J) en Windows y Linux
    • + ( K=> J) en macOS

Referencias: https://code.visualstudio.com/docs/getstarted/keybindings


2
@ DouglasGaskell Cometí el mismo error. Es un cero, no un o, la Fold Levelrespuesta de Michael Fulton tenía más sentido para mí.
Dan Marshall

1
No sé si es un problema de la versión del Código, un problema de la versión de Windows u otra cosa, pero en mi PC solo funciona con Right-Ctrl. ¡Quizás quieras notar eso!
Marte

77
Básicamente es Ctrl + K, Ctrl + [n] donde n es el número de nivel hasta el que desea plegarse. Por lo tanto, si está buscando un equivalente de Ctrl + M, Ctrl + O de VS (C #) en VSCode, será Ctrl + K, Ctrl + 3.
Yashash Gaurav

3
@ Preza8 de prensa F1y tipo Fold o Despliegue
Alexg

2
@ Preza8 También le muestra la combinación de teclas asignada actualmente, si no se asigna ninguno, puede asignarlo usted mismo. Además, puede haber una extensión para agregar botones GUI personalizados
AlexG

222

A partir de Visual Studio Code versión 1.12.0, abril de 2017, consulte la sección Edición básica> Plegado en los documentos.

Las claves predeterminadas son:

Doblar todo: CTRL+ K, CTRL+ 0(cero)

Nivel de plegado [n]: CTRL+ K, CTRL+ [n]*

Desplegar todo: CTRL+ K, CTRL+J

Región de plegado: CTRL+ K, CTRL+[

Región desplegada: CTRL+ K, CTRL+]

* Nivel de plegado: para plegar todas las clases excepto las más externas, prueba CTRL+ K, CTRL+1

Macs: uso en lugar de CTRL(gracias Prajeet)


¿Guarda y restaura el estado de pliegues entre el inicio / apagado de IDE?
Verde

Alguna razón ctrl+k,ctrl+numsolo funciona en números superiores a qwerty, no en el teclado numérico
MotKohn

2
Doblar hasta el nivel [n] no pliega la sección donde se encuentra el cursor. Esto siempre me hace pensar que no hizo lo que esperaba. ¿Hay una opción para desactivar este comportamiento?
RonnBlack

92

El plegado de código por regiones ha llegado con v1.17. Plegable por regiones documentación . Y v1.19 y 1.23 .

[En general, se puede añadir un espacio, por ejemplo // region and // endregiona //region and //endregiony también se va a trabajar.]

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`

Importante: si no ve su idioma en la lista ::

Cada idioma también tiene fragmentos disponibles para los marcadores. Escriba '#' e invoque la finalización del código para verlos. Para configurar los marcadores de región para su idioma, póngase en contacto con el proveedor de extensión de idioma.

Escriba #y luego Ctrl+ Spacepara ver los marcadores de región para cualquier idioma.



1
// regiony // endregionno funcionan con VS Code versión 1.22 (sin embargo, no he probado versiones inferiores o superiores). Pero // #regiony // #endregionfunciona (tenga en cuenta el '#' y el espacio en ambos). De esta manera, ESLint (si está utilizando) no mostrará un error si la spaced-commentregla está activada ( es decir, no está configurada en 'desactivada' o 0).
ozanmuyes

En CSS, es en realidad /* #region Foo Bar */y/* #endregion */
toddmo

1
@ozanmuyes depende del tipo de archivo (idioma). //regiony //endregionson para JavaScript.
lealceldeiro

Funciona muy bien en los archivos .yaml de Docker también, si instala el docker de Microsoft ext: marketplace.visualstudio.com/…
Robert

v1.41: ¡Probé XML y funcionó! <!-- #region --> elements <!-- #endregion -->. Muestra el texto que sigue a la # región en la sección plegada. Se pliega correctamente desde la # región actual a la # región final correspondiente, incluso si hay otros anidados, al igual que los paréntesis en cualquier ecuación. Recuerda la configuración de plegado para regiones anidadas. Ctrl + k + Ctrl + [y Ctrl + k + Ctrl +] cerrar / abrir los pliegues correctamente en el cursor. (lo que me parece un poco al revés, pero qué pasa) ¡Grandes cosas!
TonyG

73

Esta característica está disponible en la compilación estándar ahora. Para que aparezcan los controles de colapso / expansión, debe pasar el mouse sobre el área a la derecha de los números de línea como se muestra en esta captura de pantalla:

Ingrese la descripción de la imagen aquí


31

Debe agregar la configuración de usuario:

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

"editor.foldingStrategy" fue, con mucho, el consejo más útil para mí. Estoy editando el código Liquid (Shopify) y no pude doblar mi código. Una vez que cambié de 'auto' a 'sangría' VS Code examinó la sangría, no el lenguaje específico que estaba usando, muy útil, gracias
Benjamin

24

Los accesos directos predeterminados para colapsar / extender son:

Ctrl+ Shift+ [: "Doblar"

Ctrl+ Shift+ Alt+ [: "Doblar todo"

Ctrl+ Shift+ ]: "Desplegar"

Ctrl+ Shift+ Alt+ ]: "Desplegar todo"

O vaya a keybindings.json y cambie como desee.

Por ejemplo:

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

¿Está esto limitado a algunos idiomas? no funciona para mí en OSX / typecript.
dcsan

1
Por favor revise esto: ctrl+shift+alt+[ "Unfold all"usted escribió en [lugar de ]. Corrígeme si estoy equivocado.
fWd82

@dcsan tampoco funciona para mí en python / linux. Ctrl + K, Ctrl + 0 (cero) y Ctrl + K, Ctrl + J funcionan aunque según la respuesta aceptada
claro

no funciona
KansaiRobot

19

Si ninguno de los accesos directos funciona (como para mí), como solución alternativa también puede abrir la paleta de comandos ( Ctrl+ 3o Ver -> Paleta de comandos ...) y escribir fold all:

ingrese la descripción de la imagen aquí


Creo que descubrí lo que sucede ... dobla el bloque solo si hay [+] disponible, en Python, por ejemplo, no dobla lo siguiente: github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/…
Helder Sepulveda

@HelderSepulveda Bueno, supuestamente dobla los comentarios de bloque, pero Python no tiene esos. El código que vinculó usa múltiples comentarios de una sola línea.
Jorn Vernee

16

ctrl+ k+ 0: Doblar todos los niveles (espacio de nombres, clase, método, bloque)

ctrl+ k+ 1: namspace

ctrl+ k+ 2: clase

ctrl+ k+ 3: métodos

ctrl+ k+ 4: bloques

ctrl+ k+ [o ]: bloque de cursor actual

ctrl+ k+ j: Desplegar


12

El colapso ahora es compatible con la versión 1.0 :

Accesos directos plegables del código fuente

Hay nuevas acciones de plegado para contraer regiones de código fuente en función de su nivel de plegado.

Hay acciones para doblar el nivel 1 ( Ctrl+ K Ctrl+ 1) al nivel 5 ( Ctrl+ K Ctrl+ 5). Para desplegar, use Desplegar todo ( Ctrl+ Shift+ Alt+ ]).

Las acciones de plegado de nivel no se aplican a la región que contiene el cursor actual.

Tuve un problema para encontrar el ]botón en mi teclado (diseño noruego), y en mi caso fue el Åbotón. (O dos botones a la izquierda y uno hacia abajo a partir del botón de retroceso).



4

A partir de la versión 1.3.1 (2016-07-17), Block Collapse es mucho más conveniente.

Cualquier línea seguida por una línea sangrada tendrá un carácter '-' para permitir el colapso. Si el bloque está colapsado, será reemplazado por un carácter '+' que abrirá el bloque colapsado.

El ( Ctrl+ Shift+ Alt+ ]) seguirá afectando a todos los bloques, cerrando un nivel. Cada uso repetido cerró un nivel más. El ( Ctrl+ Shift+ Alt+ [) funciona de manera opuesta.

Hurra, el colapso del bloque finalmente funciona de manera útil.


Además de esto, si supera un comentario alrededor de una región de código, puede usar comentarios para crear regiones personalizadas en su código y colapsar segmentos personalizados completos. ¡Gran característica!
Tim Cederquist

Esto no funciona a partir del 13 de julio de 2019. ¿Hay algún otro atajo de teclado que lo sustituya? (¿colapsar / expandir un nivel a la vez? {
Martin

3

Controles de plegado de código dentro del editor para expandir nodos de documentos estructurados en XML y código fuente en VsCode

No hay consejos técnicos aquí, solo ajustes simples de las preferencias de VsCode.

Logré mostrar controles de plegado de código siempre en VsCode yendo a Preferencias y buscando 'plegado'. Ahora solo seleccione para mostrar siempre estos controles. Esto funciona con el código de Typecript y HTML de plantillas en la solución Angular 8 con la que lo probé.

Esto se probó con VsCode Insiders 1.37.0 ejecutándose en un sistema operativo Windows 10.

Mostrar controles de plegado de código siempre en VsCode


3

v1.42 está agregando algunos refinamientos agradables a cómo se ven y funcionan los pliegues. Ver https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting :

Destacado de rango plegado

Los rangos plegados ahora son más fáciles de descubrir gracias a un color de fondo para todos los rangos plegados.

resaltar pliegue

Color de resaltado del pliegue Tema: Oscuro +

La función está controlada por la configuración editor.foldingHighlight y el color se puede personalizar con el editor de color.foldBackground.

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

Refinamientos plegables

Shift + Clicken el indicador de plegado, primero solo se pliegan los rangos internos. Shift + Clicknuevamente (cuando todos los rangos internos ya están plegados) también se plegará el padre. Shift + ClickDe nuevo se despliega todo.

clic de cambio de plegado

Cuando utilice el comando Plegar (kb ( editor.fold))] en un rango ya plegado, se plegará el siguiente rango padre desplegado.


2

En una Mac, es la tecla Comando RHS K, no la izquierda para los comandos de plegado de código.

De lo contrario la tecla Comando mano izquierda se eliminará la línea actual, K.


2

Esta característica ahora es compatible, desde Visual Studio Code 1.17 . Para plegar / contraer el bloque de código, simplemente agregue las etiquetas de región, como //#region my block namey //#endregionsi está codificando en TypeScript / JavaScript.

Ejemplo:

Región Plegable



0

Desearía que Visual Studio Code pudiera manejar:

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

En este momento, Visual Studio Code simplemente lo ignora y no lo colapsará. Mientras tanto, Notepad ++ y PowerGUI manejan esto muy bien.

Actualización: acabo de notar una actualización para Visual Studio Code. ¡Esto ahora es compatible!


0

Nota: estos accesos directos solo funcionan como se espera si edita sus combinaciones de teclas.json

No estaba contento con los atajos predeterminados, quería que funcionaran de la siguiente manera:

  • Doblar: Ctrl+ Alt+]
  • Doblar recursivamente: Ctrl+ ⇧ Shift+ Alt+]
  • Doblar todo: Ctrl+ kluego Ctrl+]
  • Desplegar: Ctrl+ Alt+[
  • Despliegue recursivamente: Ctrl+ ⇧ Shift+ Alt+[
  • Desplegar todo: Ctrl+ kluego Ctrl+[

Para configurarlo:

  • Abierto Preferences: Open Keyboard Shortcuts (JSON)( Ctrl+ ⇧ Shift+ p)
  • Agregue el siguiente fragmento a ese archivo

    ¿Ya tiene combinaciones de teclas personalizadas para plegar / desplegar? Entonces necesitarías reemplazarlos.

    {
        "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"
    },
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.