Come posso comprimere sezioni di codice in Visual Studio Code per Windows?


772

Come piegare o comprimere sezioni di codice in Visual Studio Code?

Questa funzione è supportata?

Risposte:


1353

La piegatura è stata implementata e ora è implementata dalla versione 0.10.11 di Visual Studio Code . Sono disponibili queste scorciatoie da tastiera:

  • Piega piega la regione più interna non sovrapposta al cursore:

    • Ctrl+ Shift+ [su Windows e Linux
    • + + [su macOS
  • Unfold spiega la regione compressa al cursore:

    • Ctrl+ Shift+ ]su Windows e Linux
    • + + ]su macOS
  • Piega tutto piega tutte le regioni nell'editor:

    • Ctrl+ ( K=> 0) (zero) su Windows e Linux
    • + ( K=> 0) (zero) su macOS
  • Unfold All spiega tutte le regioni nell'editor:

    • Ctrl+ ( K=> J) su Windows e Linux
    • + ( K=> J) su macOS

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


2
@DouglasGaskell Ho fatto lo stesso errore. È uno zero, non uno o, la Fold Levelrisposta di Michael Fulton aveva più senso per me.
Dan Marshall,

1
Non so se è un problema di versione del codice, un problema di versione di Windows o qualcos'altro, ma sul mio PC funziona solo con Right-Ctrl. Potresti volerlo notare!
Marte

6
Fondamentalmente è Ctrl + K, Ctrl + [n] dove n è il numero di livello fino al quale si desidera piegare. Quindi, se stai cercando un equivalente di Ctrl + M, Ctrl + O di VS (C #) su VSCode, sarà Ctrl + K, Ctrl + 3.
Yashash Gaurav,

3
@ Preza8 Premi F1e digita Fold or Unfold
AlexG

2
@ Preza8 Ti mostra anche l'associazione dei tasti correntemente assunta, se nessuno è assegnato, puoi assegnarlo tu stesso. Inoltre, potrebbe esserci un'estensione per aggiungere pulsanti della GUI personalizzati
AlexG

222

A partire da Visual Studio Code versione 1.12.0, aprile 2017, vedere la sezione Modifica di base> Piegatura nei documenti.

Le chiavi predefinite sono:

Piega tutto: CTRL+ K, CTRL+ 0(zero)

Livello piegatura [n]: CTRL+ K, CTRL+ [n]*

Spiega tutto: CTRL+ K, CTRL+J

Piega regione: CTRL+ K, CTRL+[

Regione spiegata: CTRL+ K, CTRL+]

* Livello piega: per piegare tutte le classi tranne quelle più esterne, prova CTRL+ K, CTRL+1

Mac: usa invece di CTRL(grazie Prajeet)


Salva e ripristina lo stato delle pieghe tra avvio / arresto IDE?
Verde,

Alcuni motivi ctrl+k,ctrl+numfunzionano solo su numeri sopra qwerty e non su tastierino numerico
MotKohn,

2
Piega al livello [n] non piega la sezione in cui si trova il cursore. Questo mi fa sempre pensare che non ha fatto quello che mi aspettavo. Esiste un'opzione per disattivare questo comportamento?
Ronn Black Black

92

Il codice pieghevole per regioni è arrivato con v1.17. Piegatura per documentazione delle regioni . E v1.19 e 1.23 .

[In genere è possibile aggiungere uno spazio, ad esempio // region and // endregionper //region and //endregione sarà anche il lavoro.]

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: se non vedi la tua lingua nell'elenco:

Ogni lingua ha anche frammenti disponibili per i marcatori. Digita '#' e invoca il completamento del codice per vederli. Per configurare gli indicatori di regione per la tua lingua, contatta il fornitore dell'estensione lingua.

Quindi digitare #e quindi Ctrl+ Spaceper vedere i marcatori di regione per qualsiasi lingua.



1
// regione // endregionnon funzionano con VS Code versione 1.22 (non ho ancora testato versioni precedenti o successive). Ma // #regione // #endregionopere (si noti il '#' e lo spazio in entrambi). In questo modo ESLint (se si sta utilizzando) non mostrerà errori se la spaced-commentregola è attiva (ovvero non impostata su 'off' o 0).
ozanmuyes,

In CSS, è in realtà /* #region Foo Bar */e/* #endregion */
toddmo

1
@ozanmuyes dipende dal tipo di file (lingua). //regione //endregionsono per JavaScript.
Lealceldeiro,

Funziona bene anche con i file .yaml Docker, se si installa la docker ext di Microsoft: marketplace.visualstudio.com/…
Robert,

v1.41: ho provato XML e ha funzionato! <!-- #region --> elements <!-- #endregion -->. Visualizza il testo che segue la regione # nella sezione piegata. Si piega correttamente dalla #regione corrente alla #gregione corrispondente, anche se ce ne sono altri nidificati, proprio come parentesi in qualsiasi equazione. Ricorda l'impostazione di piega per le aree nidificate. Ctrl + k + Ctrl + [e Ctrl + k + Ctrl +] chiudi / apri correttamente le pieghe sul cursore. (che mi sembra un po 'arretrato, ma whatevah) Grandi cose!
TonyG,

73

Questa funzione è ora disponibile nella build standard. Per visualizzare i controlli di compressione / espansione, è necessario passare il mouse sull'area a destra dei numeri di riga, come mostrato in questo screenshot:

Inserisci qui la descrizione dell'immagine


31

È necessario aggiungere le impostazioni utente:

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

"editor.foldingStrategy" è stato di gran lunga il consiglio più utile per me. Sto modificando il codice Liquid (Shopify) e non sono stato in grado di piegare il mio codice. Una volta che sono passato da "auto" a "rientro", VS Code ha esaminato il rientro non la lingua specifica che stavo usando, molto utile, grazie
Benjamin,

24

I collegamenti predefiniti per comprimi / estendi sono:

Ctrl+ Shift+ [: "Piega"

Ctrl+ Shift+ Alt+ [: "Piega tutto"

Ctrl+ Shift+ ]: "Spiega"

Ctrl+ Shift+ Alt+ ]: "Spiega tutto"

Oppure vai su keybindings.json e cambia come desideri.

Per esempio:

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

è limitato ad alcune lingue? non funziona per me su OSX / dattiloscritto.
dcsan,

1
Per favore, leggi questo: ctrl+shift+alt+[ "Unfold all"hai scritto [invece di ]. Correggimi se sbaglio.
fWd82,

@dcsan non funziona neanche per me in Python / Linux. Ctrl + K, Ctrl + 0 (zero) e Ctrl + K, Ctrl + J funzionano però secondo la risposta accettata
chiaramente il

non funziona
KansaiRobot il

19

Se nessuna delle scorciatoie funziona (come per me), come soluzione alternativa puoi anche aprire la tavolozza dei comandi ( Ctrl+ 3o Visualizza -> Tavolozza dei comandi ...) e digitare fold all:

inserisci qui la descrizione dell'immagine


Penso di aver capito cosa succede ... piega il blocco solo se è disponibile il [+], ad esempio in Python non piega quanto segue: github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/…
Helder Sepulveda,

@HelderSepulveda Bene, presumibilmente piega i commenti in blocco, ma Python non li ha. Il codice che hai collegato utilizza più commenti a riga singola.
Jorn Vernee,

16

ctrl+ k+ 0: Piega tutti i livelli (spazio dei nomi, classe, metodo, blocco)

ctrl+ k+ 1: namspace

ctrl+ k+ 2: classe

ctrl+ k+ 3: metodi

ctrl+ k+ 4: blocchi

ctrl+ k+ [o ]: blocco cursore corrente

ctrl+ k+ j: UnFold


12

Il collasso è ora supportato nella versione 1.0 :

Tasti di scelta rapida per il codice sorgente

Esistono nuove azioni di piegatura per comprimere le regioni del codice sorgente in base al loro livello di piegatura.

Ci sono azioni per piegare il livello 1 ( Ctrl+ K Ctrl+ 1) al livello 5 ( Ctrl+ K Ctrl+ 5). Per dispiegare, usa Unfold All ( Ctrl+ Shift+ Alt+ ]).

Le azioni di piegatura del livello non si applicano alla regione che contiene il cursore corrente.

Ho avuto un problema a trovare il ]pulsante sulla mia tastiera (layout norvegese) e nel mio caso era il Åpulsante. (O due pulsanti a sinistra e uno in basso a partire dal pulsante backspace.)



4

A partire dalla versione 1.3.1 (17-07-2016), Block Collapse è molto più conveniente.

Qualsiasi riga seguita da una riga rientrata avrà un carattere "-" per consentire il collasso. Se il blocco viene compresso, verrà sostituito da un carattere "+" che aprirà il blocco compresso.

( Ctrl+ Shift+ Alt+ ]) Influenzerà comunque tutti i blocchi, chiudendo un livello. Ogni uso ripetuto ha chiuso un altro livello. ( Ctrl+ Shift+ Alt+ [) Funziona in modo opposto.

Evviva, il blocco dei blocchi finalmente funziona utilmente.


In aggiunta a questo: se si supera un commento in una regione di codice, è possibile utilizzare i commenti per creare aree personalizzate nel codice e comprimere interi segmenti personalizzati! Grande funzionalità!
Tim Cederquist,

Questo non funziona dal 13 luglio 2019. C'è qualche altra scorciatoia da tastiera che lo sostituisce? (crollare / espandere un livello alla volta? {
Martin

3

Controlli di piegatura del codice all'interno dell'editor per espandere nodi di documenti strutturati in XML e codice sorgente in VsCode

Non ci sono consigli tecnici qui, solo semplici aggiustamenti delle preferenze di VsCode.

Sono riuscito a mostrare i controlli di piegatura del codice sempre in VsCode andando su Preferenze e cercando 'pieghevole'. Ora seleziona solo per mostrare sempre questi controlli. Funziona con il codice Typescript e l'HTML dei modelli nella soluzione Angular 8 con cui l'ho provato.

Questo è stato testato con VsCode Insiders 1.37.0 in esecuzione su un sistema operativo Windows 10.

Mostra i controlli di piegatura del codice sempre in VsCode


3

v1.42 sta aggiungendo alcuni raffinati perfezionamenti all'aspetto e al funzionamento delle pieghe. Vedi https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting :

Evidenziazione della gamma piegata

Gli intervalli piegati ora sono più facili da scoprire grazie a un colore di sfondo per tutti gli intervalli piegati.

evidenziare la piega

Piega il colore di evidenziazione Tema: Dark +

La funzione è controllata dall'editor di impostazione.foldingHighlight e il colore può essere personalizzato con l'editor di colori.foldBackground.

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

Perfezionamenti pieghevoli

Shift + Clicksull'indicatore di piegatura prima piega solo le gamme interne. Shift + Clickdi nuovo (quando tutti gli intervalli interni sono già piegati) piegherà anche il genitore. Shift + Clickdi nuovo spiega tutto.

piega il clic del cambio

Quando si utilizza il comando Piega (kb ( editor.fold))] su un intervallo già piegato, il successivo intervallo genitore non piegato verrà piegato.


2

Su un Mac, è il tasto Comando RHS K, non a sinistra per i comandi di piegatura del codice.

In caso contrario, il tasto Comando mano sinistra cancellerà la riga corrente, K.


2

Questa funzionalità è ora supportata dal Visual Studio Code 1.17 . Per piegare / comprimere il blocco di codice, basta aggiungere i tag di regione, come //#region my block namee //#endregionse codificare in TypeScript / JavaScript.

Esempio:

Region Folding



0

Vorrei che Visual Studio Code potesse gestire:

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

Al momento il codice di Visual Studio lo ignora e non lo comprime. Nel frattempo Notepad ++ e PowerGUI lo gestiscono bene.

Aggiornamento: ho appena notato un aggiornamento per Visual Studio Code. Questo è ora supportato!


0

Nota: queste scorciatoie funzionano come previsto se modifichi keybindings.json

Non ero contento delle scorciatoie predefinite, volevo che funzionassero come segue:

  • Piega: Ctrl+ Alt+]
  • Piega in modo ricorsivo: Ctrl+ ⇧ Shift+ Alt+]
  • Piega tutto: Ctrl+ kpoi Ctrl+]
  • Spiegare: Ctrl+ Alt+[
  • Spiegare in modo ricorsivo: Ctrl+ ⇧ Shift+ Alt+[
  • Spiega tutto: Ctrl+ kquindi Ctrl+[

Per configurarlo:

  • Apri Preferences: Open Keyboard Shortcuts (JSON)( Ctrl+ ⇧ Shift+ p)
  • Aggiungi il seguente frammento a quel file

    Hai già delle combinazioni di tasti personalizzate per fold / unfold? Quindi dovrai sostituirli.

    {
        "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"
    },
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.