Jak zwinąć sekcje kodu w programie Visual Studio Code dla systemu Windows?

770

Jak złożyć lub zwinąć sekcje kodu w programie Visual Studio Code?

Czy ta funkcja jest obsługiwana?

Nacięcie
źródło

Odpowiedzi:

1351

Składanie zostało wdrożone i jest teraz wdrażane od wersji Visual Studio Code 0.10.11 . Dostępne są następujące skróty klawiaturowe:

  • Fold składa się w najbardziej wewnętrzny niezłapany obszar pod kursorem:

    • Ctrl+ Shift+ [w systemach Windows i Linux
    • + + [w systemie macOS
  • Rozłóż rozwija zwinięty region pod kursorem:

    • Ctrl+ Shift+ ]w systemach Windows i Linux
    • + + ]w systemie macOS
  • Fold All składa wszystkie regiony w edytorze:

    • Ctrl+ ( K=> 0) (zero) w systemach Windows i Linux
    • + ( K=> 0) (zero) na macOS
  • Unfold All rozwija wszystkie regiony w edytorze:

    • Ctrl+ ( K=> J) w systemach Windows i Linux
    • + ( K=> J) na macOS

Odnośniki: https://code.visualstudio.com/docs/getstarted/keybindings

Brocco
źródło
2
@DouglasGaskell Popełniłem ten sam błąd. To zero, a nie odpowiedź Michaela Fultona Fold Levelbyła dla mnie bardziej sensowna.
Dan Marshall
1
Nie wiem, czy jest to problem z wersją kodu, problem z wersją systemu Windows, czy coś innego, ale na moim komputerze działa tylko z prawym klawiszem Ctrl. Możesz to zauważyć!
Mars
6
Jest to po prostu Ctrl + K, Ctrl + [n], gdzie n to liczba poziomów do której chcesz złożyć. Dlatego jeśli szukasz odpowiednika Ctrl + M, Ctrl + O VS (C #) na VSCode, będzie to Ctrl + K, Ctrl + 3.
Yashash Gaurav,
3
@ Preza8 Naciśnij F1i wpisz Fold lub Unfold
AlexG
2
@ Preza8 Pokazuje również aktualnie przypisane przypisanie klawiszy, jeśli nie zostało przypisane, możesz je przypisać samodzielnie. Ponadto może istnieć rozszerzenie do dodawania niestandardowych przycisków GUI
AlexG
222

Począwszy od wersji Visual Studio Code 1.12.0, kwiecień 2017 r., Patrz Edycja podstawowa> sekcja Składanie w dokumentacji.

Domyślne klucze to:

Zwiń wszystko: CTRL+ K, CTRL+ 0(zero)

Poziom składania [n]: CTRL+ K, CTRL+ [n]*

Rozwiń wszystko: CTRL+ K, CTRL+J

Fold Region: CTRL+ K, CTRL+[

Rozwiń region: CTRL+ K, CTRL+]

* Poziom składania: aby spasować wszystkie klasy oprócz najbardziej zewnętrznych, spróbuj CTRL+ K, CTRL+1

Mac: użyj zamiast CTRL(dzięki Prajeet)

Michael Fulton
źródło
Czy zapisuje i przywraca stan fałdowania między uruchomieniem / wyłączeniem IDE?
Zielony,
Z jakiegoś powodu ctrl+k,ctrl+numdziała tylko na liczbach powyżej qwerty, a nie na numpad
MotKohn 28.09.17
2
Fold to level [n] nie składa sekcji, w której znajduje się kursor. To zawsze sprawia, że ​​myślę, że nie spełniło moich oczekiwań. Czy istnieje opcja wyłączenia tego zachowania?
RonnBlack
92

W wersji 1.11 pojawiło się składanie kodów według regionów . Składanie dokumentacji według regionów . Oraz v1.19 i 1.23 .

[Ogólnie można dodać przestrzeń, na przykład // region and // endregiondo //region and //endregioni będzie działać.]

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

Każdy język ma również fragmenty dostępne dla znaczników. Wpisz „#” i wywołaj uzupełnianie kodu, aby je zobaczyć. Aby skonfigurować znaczniki regionu dla Twojego języka, skontaktuj się z dostawcą rozszerzenia języka.

v1.23 dodaje regiony CSS / SCSS / Mniej regionów zwijania kodu:

CSS/SCSS/Less:         /* #region */ and /* #endregion */ or /*#region*/ and /*#endregion*/
SCSS/Less:             // #region and // #endregion

Dodano v1.35:

Go:                   // region, // endregion and // #region, // #endregion

v.1.36 dodaje shellscript, patrz [problem github: dodawanie znaczników składania shellscript]. 4 :

shellscript:          # region and # endregion

v1.42 dodawanie Perl5 itp. (patrz https://github.com/microsoft/vscode-docs/commit/ec3e9d07724510eaf0c3b7200b09c9c22d3be7c3 ):

Perl5 #region and #endregion or =pod and =cut


Wersja 1.39 dodaje możliwość przełączania składania za pomocą polecenia editor.toggleFold.

Jest domyślnie związany z Ctrl+ K Ctrl+ L. Zobacz https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_39.md#toggle-folding .

znak
źródło
1
// regioni // endregionnie działają z wersją VS Code 1.22 (jednak nie testowałem wersji poniżej lub powyżej). Ale // #regioni // #endregiondziała (zwróć uwagę na „#” i spację w obu). W ten sposób ESLint (jeśli używasz) nie wyświetli błędu, jeśli spaced-commentreguła jest włączona (tzn. Nie jest ustawiona na „wyłączone” lub 0).
ozanmuyes
W CSS jest to /* #region Foo Bar */i/* #endregion */
toddmo
1
@ozanmuyes to zależy od typu pliku (języka). //regioni //endregionsą dla JavaScript.
lealceldeiro
Ładnie działa również w plikach .yaml Dockera, jeśli zainstalujesz dokowanie Microsoft ext: marketplace.visualstudio.com/…
Robert
v1.41: Próbowałem XML i zadziałało! <!-- #region --> elements <!-- #endregion -->. Wyświetla tekst następujący po #region w sekcji złożonej. Prawidłowo składa się z bieżącego # regionu do odpowiedniego # regionu, nawet jeśli są inne zagnieżdżone - podobnie jak nawiasy w dowolnym równaniu. Zapamiętuje ustawienie zagięcia dla zagnieżdżonych regionów. Ctrl + k + Ctrl + [i Ctrl + k + Ctrl +] zamknij / otwórz fałdy poprawnie przy kursorze. (co wydaje mi się trochę zacofane, ale whatevah) Świetne rzeczy!
TonyG
73

Ta funkcja jest teraz dostępna w standardowej wersji. Aby wyświetlić kontrolki zwinięcia / rozwinięcia, musisz najechać myszką na obszar po prawej stronie numerów linii, jak pokazano na tym zrzucie ekranu:

Wpisz opis zdjęcia tutaj

BraveNewMath
źródło
31

Powinieneś dodać ustawienia użytkownika:

{
    "editor.showFoldingControls": "always",
    "editor.folding": true,
    "editor.foldingStrategy": "indentation", 
}
Minh Tien Tran
źródło
„Editor.foldingStrategy” był dla mnie najbardziej pomocną wskazówką. Edytuję kod ciekły (Shopify) i nie mogłem złożyć swojego kodu. Kiedy przeszedłem z „auto” na „wcięcie” VS Code spojrzał na wcięcie, a nie na konkretny język, którego używałem, bardzo pomocne, dziękuję
Benjamin,
24

Domyślny skrót do zwinięcia / przedłużenia to:

Ctrl+ Shift+ [: „Fold”

Ctrl+ Shift+ Alt+ [: „Fold all”

Ctrl+ Shift+ ]: „Rozłóż”

Ctrl+ Shift+ Alt+ ]: „Rozwiń wszystko”

Lub przejdź do keybindings.json i zmieniaj, jak chcesz.

Na przykład:

{
    "key": "cmd+k cmd+m",
    "command": "editor.foldAll",
    "when": "editorFocus"
},
{
    "key": "cmd+m cmd+k",
    "command": "editor.unfoldAll",
    "when": "editorFocus"
},
Samuel Pinto
źródło
czy jest to ograniczone do niektórych języków? nie działa dla mnie na OSX / maszynopisie.
dcsan
1
Przeczytaj to: ctrl+shift+alt+[ "Unfold all"Napisałeś [zamiast ]. Popraw mnie, jeśli się mylę.
fWd82
@dcsan to też nie działa dla mnie w python / linux. Ctrl + K, Ctrl + 0 (zero) i Ctrl + K, Ctrl + J działają jednak zgodnie z przyjętą odpowiedzią
jasne
to nie działa
KansaiRobot
19

Jeśli żaden skrót nie działa (jak dla mnie), w celu obejścia tego problemu możesz również otworzyć paletę poleceń ( Ctrl+ 3lub Widok -> Paleta poleceń ...) i wpisać fold all:

wprowadź opis zdjęcia tutaj

Jorn Vernee
źródło
Chyba zorientowałem się, co się dzieje ... składa blok tylko wtedy, gdy jest dostępny [+], na przykład w pythonie nie składa następujących elementów: github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/...
Helder Sepulveda
@HelderSepulveda Cóż, podobno składa komentarze blokowe, ale python ich nie ma. W połączonym kodzie zastosowano wiele komentarzy w jednym wierszu.
Jorn Vernee
16

ctrl+ k+ 0: Zwiń wszystkie poziomy (przestrzeń nazw, klasa, metoda, blok)

ctrl+ k+ 1: namspace

ctrl+ k+ 2: klasa

ctrl+ k+ 3: metody

ctrl+ k+ 4: bloki

ctrl+ k+ [lub ]: bieżący blok kursora

ctrl+ k+ j: Rozłóż

M. Komaei
źródło
12

Zwijanie jest teraz obsługiwane w wersji 1.0 :

Skróty do składania kodu źródłowego

Wprowadzono nowe czynności składania, które pozwalają zwinąć regiony kodu źródłowego na podstawie ich poziomu składania.

Istnieją akcje, aby spasować poziom 1 ( Ctrl+ K Ctrl+ 1) do poziomu 5 ( Ctrl+ K Ctrl+ 5). Aby rozwinąć, użyj opcji Rozwiń wszystko ( Ctrl+ Shift+ Alt+ ]).

Akcje składania poziomu nie dotyczą regionu zawierającego bieżący kursor.

Miałem problem ze znalezieniem ]przycisku na klawiaturze (układ norweski), aw moim przypadku był to Åprzycisk. (Lub dwa przyciski w lewo i jeden w dół, zaczynając od przycisku Backspace.)

Stian Standahl
źródło
8

Z JavaScript:

//#region REGION_NAME
   ...code here
//#endregion
Rafael Grilli
źródło
4

Od wersji 1.3.1 (2016-07-17) Block Collapse jest znacznie wygodniejszy.

Każda linia po linii wciętej będzie miała znak „-”, aby umożliwić zwinięcie. Jeśli blok jest zwinięty, zostanie zastąpiony znakiem „+”, który otworzy zwinięty blok.

( Ctrl+ Shift+ Alt+ ]) Nadal będzie wpływać na wszystkie bloki, zamykając jeden poziom. Każde powtórne użycie zamykało jeden poziom. ( Ctrl+ Shift+ Alt+ [) Działa w odwrotny sposób.

Brawo, zawalenie się bloku w końcu działa pożytecznie.

Miguelito
źródło
Dodając do tego - jeśli wygrasz komentarz wokół regionu kodu, możesz użyć komentarzy, aby zbudować niestandardowe regiony w kodzie i zwinąć całe niestandardowe segmenty! Świetna funkcja!
Tim Cederquist,
To nie działa od 13 lipca 2019 r. Czy istnieje inny skrót keboard zastępujący go? (zwijanie / rozwijanie jednego poziomu na raz? {
Martin
3

Kontrolki składania kodu wewnątrz edytora w celu rozszerzenia węzłów dokumentów o strukturze XML i kodu źródłowego w VsCode

Nie ma tu żadnych wskazówek technicznych, wystarczy proste dostosowanie preferencji VsCode.

Udało mi się wyświetlić elementy sterujące składaniem kodu zawsze w VsCode, przechodząc do Preferencji i szukając „składania”. Teraz wybierz, aby zawsze wyświetlać te elementy sterujące. Działa to z kodem Typescript i HTML szablonów w rozwiązaniu Angular 8, z którym go testowałem.

Zostało to przetestowane z VsCode Insiders 1.37.0 działającym na systemie operacyjnym Windows 10.

Pokaż kontrolki składania kodu zawsze w VsCode

Tore Aurstad
źródło
3

Wersja 1.42 dodaje kilka udoskonaleń dotyczących wyglądu i działania fałd. Zobacz https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting :

Podświetlanie zakresu składanego

Zakresy złożone są teraz łatwiejsze do odkrycia dzięki kolorowi tła dla wszystkich zakresów złożonych.

krotnie podkreśl

Kolor podświetlenia krotnie Motyw: Ciemny +

Funkcją steruje edytor ustawień. Składanie Podświetlanie, a kolor można dostosować za pomocą edytora kolorów. Składanka.

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

Składane udoskonalenia

Shift + Clickna wskaźniku składania najpierw składa tylko wewnętrzne zakresy. Shift + Clickponownie (gdy wszystkie wewnętrzne zakresy są już złożone) spowoduje również spasowanie rodzica. Shift + Clickponownie rozwija się wszystko.

kliknij z wciśniętym klawiszem Shift

Gdy użyjesz polecenia Fold (kb ( editor.fold))] na już złożonym zakresie, następny rozłożony zakres macierzysty zostanie złożony.

znak
źródło
2

Na komputerze Mac jest to klawisz polecenia RHS K, a nie lewy klawisz dla poleceń składania kodu.

W przeciwnym razie klawisz Command lewa ręka będzie usunąć bieżącą linię K.

ReaddyEddy
źródło
2

Ta funkcja jest teraz obsługiwana, ponieważ Visual Studio Code 1.17 . Aby złożyć / zwinąć blok kodu, po prostu dodaj tagi regionu, takie jak //#region my block namei //#endregionjeśli kodujesz w TypeScript / JavaScript.

Przykład:

Składanie regionu

Murilo Perrone
źródło
1

Rozszerzenie VSCode: Fold Level , jeden klawisz fold do pożądanego poziomu.

wprowadź opis zdjęcia tutaj

Vikyd
źródło
0

Chciałbym, aby Visual Studio Code mógł obsługiwać:

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

W tej chwili program Visual Studio Code po prostu go ignoruje i nie zwinie go. Tymczasem Notepad ++ i PowerGUI radzą sobie z tym dobrze.

Aktualizacja: Właśnie zauważyłem aktualizację programu Visual Studio Code. To jest teraz obsługiwane!

Pan zirytowany
źródło
0

Uwaga: te skróty działają tylko zgodnie z oczekiwaniami, jeśli edytujesz keybindings.json

Nie byłem zadowolony z domyślnych skrótów, chciałem, aby działały w następujący sposób:

  • Krotnie: Ctrl+ Alt+]
  • Złożyć rekurencyjnie: Ctrl+ ⇧ Shift+ Alt+]
  • Zwiń wszystko: Ctrl+ knastępnie Ctrl+]
  • Rozłóż: Ctrl+ Alt+[
  • Rozłóż rekurencyjnie: Ctrl+ ⇧ Shift+ Alt+[
  • Rozwiń wszystko: Ctrl+ knastępnie Ctrl+[

Aby skonfigurować:

  • Otwórz Preferences: Open Keyboard Shortcuts (JSON)( Ctrl+ ⇧ Shift+ p)
  • Dodaj następujący fragment kodu do tego pliku

    Masz już niestandardowe skróty klawiszowe do składania / rozwijania? Następnie musisz je wymienić.

    {
        "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
źródło