Como recolher seções de código no Visual Studio Code for Windows?

772

Como dobrar ou recolher seções de código no Visual Studio Code?

Este recurso é suportado?

usuario
fonte

Respostas:

1353

A dobragem foi lançada e agora está implementada desde o Visual Studio Code versão 0.10.11 . Existem estes atalhos de teclado disponíveis:

  • Dobra dobra a região não recolhida mais interna no cursor:

    • Ctrl+ Shift+ [no Windows e Linux
    • + + [no macOS
  • Desdobrar desdobra a região recolhida no cursor:

    • Ctrl+ Shift+ ]no Windows e Linux
    • + + ]no macOS
  • Dobrar Tudo dobra todas as regiões do editor:

    • Ctrl+ ( K=> 0) (zero) no Windows e Linux
    • + ( K=> 0) (zero) no macOS
  • Desdobrar Tudo desdobra todas as regiões no editor:

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

Referências: https://code.visualstudio.com/docs/getstarted/keybindings

Brocco
fonte
2
@DouglasGaskell Cometi o mesmo erro. É um zero, não um, a Fold Levelresposta de Michael Fulton fez mais sentido para mim.
Dan Marshall
1
Não sei se é um problema de versão de código, um problema de versão do Windows ou outra coisa, mas no meu PC funciona apenas com a tecla Ctrl direita. Você pode notar isso!
Mars
6
É basicamente Ctrl + K, Ctrl + [n] onde n é o número do nível até o qual você deseja dobrar. Portanto, se você estiver procurando um equivalente de Ctrl + M, Ctrl + O de VS (C #) no VSCode, será Ctrl + K, Ctrl + 3.
Yashash Gaurav
3
@ Preza8 Imprensa F1e tipo Dobre ou Unfold
AlexG
2
@ Preza8 Também mostra a combinação de teclas atualmente atribuída; se nenhuma estiver atribuída, você poderá atribuí-la. Além disso, pode haver uma extensão para adicionar personalizados GUI botões
AlexG
222

No Visual Studio Code versão 1.12.0, abril de 2017, consulte a seção Edição básica> Dobragem nos documentos.

As chaves padrão são:

Dobrar tudo: CTRL+ K, CTRL+ 0(zero)

Nível de dobra [n]: CTRL+ K, CTRL+ [n]*

Desdobrar Tudo: CTRL+ K, CTRL+J

Região da dobra: CTRL+ K, CTRL+[

Desdobrar Região: CTRL+ K, CTRL+]

* Nível de dobra: para dobrar todas, exceto as classes mais externas, tente CTRL+ K, CTRL+1

Macs: use em vez de CTRL(obrigado Prajeet)

Michael Fulton
fonte
Ele salva e restaura o estado das dobras entre o início / desligamento do IDE?
Verde
Alguma razão ctrl+k,ctrl+numsó funciona em números acima QWERTY não no teclado numérico
MotKohn
2
Dobrar para o nível [n] não dobra a seção onde o cursor está localizado. Isso sempre me faz pensar que não fez o que eu esperava. Existe uma opção para desativar esse comportamento?
RonnBlack
92

A dobragem de código por regiões chegou com a v1.17. Documentação de dobragem por regiões . E v1.19 e 1.23 .

[Geralmente você pode adicionar um espaço, por exemplo, // region and // endregionpara //region and //endregione que também irá trabalhar.]

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 você não vê seu idioma na lista:

Cada idioma também possui trechos disponíveis para os marcadores. Digite '#' e chame a conclusão do código para vê-los. Para ter marcadores de região configurados para o seu idioma, entre em contato com o provedor de extensão de idioma.

Digite #e depois Ctrl+ Spacepara ver os marcadores da região para qualquer idioma.


Marca
fonte
1
// regione // endregionnão está trabalhando com o VS Code versão 1.22 (embora não tenha testado versões abaixo ou acima). Mas // #regione // #endregionfunciona (observe o '#' e o espaço em ambos). Dessa forma, o ESLint (se você estiver usando) não mostrará erro se a spaced-commentregra estiver ativada (ou seja, não definida como 'off' ou 0).
Ozanmuyes 11/04
Em CSS, é realmente /* #region Foo Bar */e/* #endregion */
toddmo
1
@ozanmuyes depende do tipo de arquivo (idioma). //regione //endregionsão para JavaScript.
Lealceldeiro
Também funciona bem nos arquivos .yaml do Docker, se você instalar o docker da Microsoft ext: marketplace.visualstudio.com/…
Robert
v1.41: Tentei XML e funcionou! <!-- #region --> elements <!-- #endregion -->. Ele exibe o texto após a região # na seção dobrada. Dobra adequadamente da região atual para a região correspondente, mesmo que haja outras aninhadas - como parênteses em qualquer equação. Ele lembra a configuração de dobra para regiões aninhadas. Ctrl + k + Ctrl + [e Ctrl + k + Ctrl +] fecham / abrem as dobras corretamente no cursor. (o que me parece um pouco atrasado, mas whatevah) Ótimas coisas!
TonyG 12/01
73

Este recurso está disponível na compilação padrão agora. Para fazer com que os controles de recolhimento / expansão apareçam, é necessário passar o mouse sobre a área à direita dos números das linhas, conforme mostrado nesta captura de tela:

Digite a descrição da imagem aqui

BraveNewMath
fonte
31

Você deve adicionar configurações do usuário:

{
    "editor.showFoldingControls": "always",
    "editor.folding": true,
    "editor.foldingStrategy": "indentation", 
}
Minh Tien Tran
fonte
"editor.foldingStrategy" foi de longe a dica mais útil para mim. Estou editando o código Liquid (Shopify) e não pude dobrar meu código. Uma vez que eu mudei de 'auto' para 'recuo' Código VS olhou para o recuo não a linguagem específica que eu estava usando, muito útil, graças
Benjamin
24

O atalho padrão para recolher / estender são:

Ctrl+ Shift+ [: "Dobrar"

Ctrl+ Shift+ Alt+ [: "Dobrar tudo"

Ctrl+ Shift+ ]: "Desdobrar"

Ctrl+ Shift+ Alt+ ]: "Desdobrar tudo"

Ou vá para keybindings.json e altere como desejar.

Por exemplo:

{
    "key": "cmd+k cmd+m",
    "command": "editor.foldAll",
    "when": "editorFocus"
},
{
    "key": "cmd+m cmd+k",
    "command": "editor.unfoldAll",
    "when": "editorFocus"
},
Samuel Pinto
fonte
isso é limitado a alguns idiomas? não funciona para mim no OSX / texto datilografado.
Dcsan # 03/16
1
Revise isso: ctrl+shift+alt+[ "Unfold all"você escreveu em [vez de ]. Corrija-me se eu estiver enganado.
FWd82 18/05
@ dcsan também não funciona para mim em python / linux. Ctrl + K, Ctrl + 0 (zero) e Ctrl + K, Ctrl + J fazer o trabalho que de acordo com a resposta aceita
Cleary
ele não funciona
KansaiRobot 21/04
19

Se nenhum dos atalhos estiver funcionando (como eu), como solução alternativa, você também pode abrir a paleta de comandos ( Ctrl+ 3ou Exibir -> paleta de comandos ...) e digitar fold all:

insira a descrição da imagem aqui

Jorn Vernee
fonte
Acho que descobri o que acontece ... ele dobra o bloco apenas se houver o [+] disponível, em python, por exemplo, não dobra o seguinte: github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/…
Helder Sepulveda
@HelderSepulveda Bem, supostamente dobra os comentários em bloco, mas o python não os possui. O código que você vinculou usa vários comentários de linha única.
Jorn Vernee
16

ctrl+ k+ 0: Dobra todos os níveis (espaço para nome, classe, método, bloco)

ctrl+ k+ 1: espaço de nome

ctrl+ k+ 2: classe

ctrl+ k+ 3: métodos

ctrl+ k+ 4: blocos

ctrl+ k+ [ou ]: bloco atual do cursor

ctrl+ k+ j: Desdobrar

M Komaei
fonte
12

O recolhimento agora é suportado na versão 1.0 :

Atalhos para dobrar código fonte

Há novas ações de dobragem para recolher as regiões do código-fonte com base no nível de dobragem.

Existem ações para dobrar o nível 1 ( Ctrl+ K Ctrl+ 1) para o nível 5 ( Ctrl+ K Ctrl+ 5). Para desdobrar, use Desdobrar tudo ( Ctrl+ Shift+ Alt+ ]).

As ações de dobra de nível não se aplicam à região que contém o cursor atual.

Ocorreu um problema ao encontrar o ]botão no teclado (layout norueguês) e, no meu caso, era o Åbotão. (Ou dois botões à esquerda e um pressionado a partir do botão Backspace.)

Stian Standahl
fonte
8

Com JavaScript:

//#region REGION_NAME
   ...code here
//#endregion
Rafael Grilli
fonte
4

A partir da versão 1.3.1 (17/07/2016), o Block Collapse é muito mais conveniente.

Qualquer linha seguida por uma linha recuada terá um caractere '-' para permitir o recolhimento. Se o bloco estiver recolhido, ele será substituído por um caractere '+' que abrirá o bloco recolhido.

O ( Ctrl+ Shift+ Alt+ ]) ainda afetará todos os blocos, fechando um nível. Cada uso repetido fechava mais um nível. O ( Ctrl+ Shift+ Alt+ [) funciona da maneira oposta.

Viva, o colapso de blocos finalmente funciona de maneira útil.

Miguelito
fonte
Além disso, se você superar um comentário em torno de uma região do código, poderá usá-lo para criar regiões personalizadas em seu código e recolher segmentos personalizados inteiros! Ótimo recurso!
Tim Cederquist
Isso não funciona a partir de 13 de julho de 2019. Existe algum outro atalho do keboard para substituí-lo? (recolhendo / expandindo um nível de cada vez? {
Martin
3

Controles de dobra de código dentro do editor para expandir nós de documentos estruturados em XML e código-fonte no VsCode

Nenhuma dica técnica aqui, apenas ajustes simples das preferências do VsCode.

Consegui mostrar os controles de dobra de código sempre no VsCode, indo para Preferências e procurando por 'dobra'. Agora basta selecionar para sempre mostrar esses controles. Isso funciona com o código Typescript e o HTML dos modelos na solução Angular 8 com a qual eu testei.

Isso foi testado com o VsCode Insiders 1.37.0 em execução em um sistema operacional Windows 10.

Mostrar controles de dobragem de código sempre no VsCode

Tore Aurstad
fonte
3

A v1.42 está adicionando alguns refinamentos interessantes à aparência e ao funcionamento das dobras. Consulte https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting :

Destaque dobrado da escala

Os intervalos dobrados agora são mais fáceis de descobrir, graças a uma cor de plano de fundo para todos os intervalos dobrados.

dobre o destaque

Dobre a cor do destaque Tema: Escuro +

O recurso é controlado pela configuração editor.foldingHighlight e a cor pode ser personalizada com a cor editor.foldBackground.

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

Refinamentos dobráveis

Shift + Clickno indicador de dobragem primeiro dobra apenas os intervalos internos. Shift + Clicknovamente (quando todos os intervalos internos já estiverem dobrados) também dobrará o pai. Shift + Clicknovamente desdobra tudo.

clique em shift shift

Ao usar o comando Dobrar (kb ( editor.fold))] em um intervalo já dobrado, o próximo intervalo pai desdobrado será dobrado.

Marca
fonte
2

Em um Mac, é a tecla Comando RHS, Ke não a esquerda para os comandos de dobragem de código.

Caso contrário, a tecla de comando esquerda excluirá a linha atual K,.

ReaddyEddy
fonte
2

Agora, esse recurso é suportado, desde o Visual Studio Code 1.17 . Para dobrar / recolher seu bloco de código, basta adicionar as tags de região, como //#region my block namee //#endregionse estiver codificando em TypeScript / JavaScript.

Exemplo:

Região dobrável

Murilo Perrone
fonte
1

Extensão VSCode: Fold Level , uma dobra de chave para o nível desejado.

insira a descrição da imagem aqui

vikyd
fonte
0

Desejo que o Visual Studio Code possa manipular:

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

No momento, o Visual Studio Code apenas o ignora e não o recolhe. Enquanto isso, o Notepad ++ e o PowerGUI lidam com isso muito bem.

Atualização: Acabei de notar uma atualização para o Visual Studio Code. Agora isso é suportado!

Sr. Irritado
fonte
0

Nota: esses atalhos funcionam apenas conforme o esperado se você editar seus keybindings.json

Não estava satisfeito com os atalhos padrão, queria que eles funcionassem da seguinte maneira:

  • Dobra: Ctrl+ Alt+]
  • Dobre recursivamente: Ctrl+ ⇧ Shift+ Alt+]
  • Dobre tudo: Ctrl+ kdepois Ctrl+]
  • Desdobrar: Ctrl+ Alt+[
  • Desdobrar recursivamente: Ctrl+ ⇧ Shift+ Alt+[
  • Desdobrar tudo: Ctrl+ kentão Ctrl+[

Para configurá-lo:

  • Aberto Preferences: Open Keyboard Shortcuts (JSON)( Ctrl+ ⇧ Shift+ p)
  • Adicione o seguinte trecho a esse arquivo

    Já possui atalhos de teclado personalizados para dobrar / desdobrar? Então você precisaria substituí-los.

    {
        "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
fonte