¿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?

Mella
fuente

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

Brocco
fuente
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)

Michael Fulton
fuente
¿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.


marca
fuente
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í

BraveNewMath
fuente
31

Debe agregar la configuración de usuario:

{
    "editor.showFoldingControls": "always",
    "editor.folding": true,
    "editor.foldingStrategy": "indentation", 
}
Minh Tien Tran
fuente
"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"
},
Samuel Pinto
fuente
¿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í

Jorn Vernee
fuente
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

M Komaei
fuente
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).

Stian Standahl
fuente
8

Con JavaScript:

//#region REGION_NAME
   ...code here
//#endregion
Rafael Grilli
fuente
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.

Miguelito
fuente
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

Tore Aurstad
fuente
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.

marca
fuente
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.

ReaddyEddy
fuente
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

Murilo Perrone
fuente
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!

Molesto
fuente
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"
    },
JesusIniesta
fuente