Bagaimana cara menutup bagian kode dalam Visual Studio Code untuk Windows?

772

Bagaimana cara melipat atau menutup bagian kode dalam Visual Studio Code?

Apakah fitur ini didukung?

Nick
sumber

Jawaban:

1353

Lipat telah diluncurkan dan sekarang dilaksanakan sejak Visual Studio Code versi 0.10.11 . Ada beberapa pintasan keyboard yang tersedia:

  • Lipat, lipat bagian paling tidak terbengkok di kursor:

    • Ctrl+ Shift+ [Pada Windows dan Linux
    • + + [Di MacOS
  • Buka lipatan wilayah yang diciutkan di kursor:

    • Ctrl+ Shift+ ]Pada Windows dan Linux
    • + + ]Di MacOS
  • Lipat Semua melipat semua wilayah di editor:

    • Ctrl+ ( K=> 0) (nol) pada Windows dan Linux
    • + ( K=> 0) (nol) pada macOS
  • Buka Semua membuka semua wilayah di editor:

    • Ctrl+ ( K=> J) pada Windows dan Linux
    • + ( K=> J) pada macOS

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

Brocco
sumber
2
@DouglasGaskell Saya membuat kesalahan yang sama. Itu nol, bukan o, Fold Leveljawaban Michael Fulton lebih masuk akal bagi saya.
Dan Marshall
1
Tidak tahu apakah ini masalah versi Kode, masalah versi Windows, atau yang lainnya, tetapi di PC saya hanya berfungsi dengan Ctrl-kanan. Anda mungkin ingin mencatat itu!
Mars
6
Pada dasarnya Ctrl + K, Ctrl + [n] di mana n adalah nomor level yang ingin Anda lipat. Oleh karena itu, jika Anda mencari yang setara dengan Ctrl + M, Ctrl + O dari VS (C #) pada VSCode, itu akan menjadi Ctrl + K, Ctrl + 3.
Yashash Gaurav
3
@ Preza8 Tekan F1dan ketik Lipat atau Buka
AlexG
2
@Preza8 Ini juga menunjukkan kepada Anda pengikat tombol yang diasumsikan saat ini, jika tidak ada yang ditetapkan, Anda dapat menetapkannya sendiri. Juga, mungkin ada ekstensi untuk menambahkan tombol GUI khusus
AlexG
222

Pada Visual Studio Code versi 1.12.0, April 2017, lihat Pengeditan Dasar> Bagian lipat dalam dokumen.

Kunci default adalah:

Lipat Semua: CTRL+ K, CTRL+ 0(nol)

Tingkat Lipat [n]: CTRL+ K, CTRL+ [n]*

Buka Semua: CTRL+ K, CTRL+J

Lipat Wilayah: CTRL+ K, CTRL+[

Wilayah Tidak Terungkap: CTRL+ K, CTRL+]

* Tingkat Lipat: untuk melipat semua kecuali kelas paling luar, coba CTRL+ K, CTRL+1

Mac: gunakan sebagai ganti CTRL(terima kasih Prajeet)

Michael Fulton
sumber
Apakah ini menyimpan dan mengembalikan keadaan lipatan antara IDE start / shut down?
Hijau
Beberapa alasan ctrl+k,ctrl+numhanya bekerja pada angka di atas qwerty bukan pada numpad
MotKohn
2
Lipat ke level [n] tidak melipat bagian di mana kursor berada. Ini selalu membuat saya berpikir itu tidak melakukan apa yang saya harapkan. Apakah ada opsi untuk mematikan perilaku ini?
RonnBlack
92

Kode lipat menurut wilayah telah tiba dengan v1.17. Dokumentasi dilipat menurut wilayah . Dan v1.19 dan 1.23 .

[Secara umum Anda dapat menambahkan spasi, misalnya // region and // endregionke //region and //endregiondan itu juga akan berfungsi.]

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`

Penting: Jika Anda tidak melihat bahasa Anda dalam daftar ::

Setiap bahasa juga memiliki cuplikan yang tersedia untuk spidol. Ketik '#' dan minta penyelesaian kode untuk melihatnya. Untuk mengkonfigurasi penanda wilayah untuk bahasa Anda, hubungi penyedia ekstensi bahasa.

Jadi ketik #dan kemudian Ctrl+ Spaceuntuk melihat penanda wilayah untuk bahasa apa pun.


Menandai
sumber
1
// regiondan // endregiontidak bekerja dengan VS Code versi 1.22 (belum menguji versi di bawah atau di atas itu). Tapi// #region dan // #endregionberhasil (perhatikan '#' dan ruang di keduanya). Dengan cara ini ESLint (jika Anda menggunakan) tidak akan menampilkan kesalahan jika spaced-commentaturan aktif (yaitu tidak disetel ke 'off' atau 0).
ozanmuyes
Dalam CSS, sebenarnya /* #region Foo Bar */dan/* #endregion */
toddmo
1
@ozanmuyes itu tergantung pada jenis file (bahasa). //regiondan //endregionuntuk JavaScript.
lealceldeiro
Berfungsi dengan baik di file .yaml Docker juga, jika Anda menginstal Microsoft docker ext: marketplace.visualstudio.com/...
Robert
v1.41: Saya mencoba XML dan berhasil! <!-- #region --> elements <!-- #endregion -->. Ini menampilkan teks mengikuti #region pada bagian yang dilipat. Itu benar dilipat dari #region saat ini ke #endregion yang sesuai, bahkan jika ada yang lain bersarang - seperti tanda kurung dalam persamaan apa pun. Itu mengingat pengaturan lipatan untuk wilayah bersarang. Ctrl + k + Ctrl + [dan Ctrl + k + Ctrl +] tutup / buka lipatan dengan benar di kursor. (yang tampaknya sedikit terbelakang bagi saya, tetapi whatevah) Hal hebat!
TonyG
73

Fitur ini tersedia dalam versi standar sekarang. Untuk membuat kontrol runtuh / perluas muncul, Anda perlu mengarahkan mouse ke area tepat di sebelah kanan nomor baris seperti yang ditunjukkan dalam tangkapan layar ini:

Masukkan deskripsi gambar di sini

BraveNewMath
sumber
31

Anda harus menambahkan pengaturan pengguna:

{
    "editor.showFoldingControls": "always",
    "editor.folding": true,
    "editor.foldingStrategy": "indentation", 
}
Minh Tien Tran
sumber
"editor.foldingStrategy" sejauh ini merupakan tip paling membantu bagi saya. Saya mengedit kode Liquid (Shopify) dan tidak dapat melipat kode saya. Setelah saya beralih dari 'otomatis' ke 'lekukan' VS Code melihat lekukan itu bukan bahasa spesifik yang saya gunakan, sangat membantu, terima kasih
Benjamin
24

Pintasan default untuk collapse / extended adalah:

Ctrl+ Shift+ [: "Lipat"

Ctrl+ Shift+ Alt+ [: "Lipat semua"

Ctrl+ Shift+ ]: "Buka"

Ctrl+ Shift+ Alt+ ]: "Buka semua"

Atau buka keybindings.json dan ubah sesuai keinginan.

Sebagai contoh:

{
    "key": "cmd+k cmd+m",
    "command": "editor.foldAll",
    "when": "editorFocus"
},
{
    "key": "cmd+m cmd+k",
    "command": "editor.unfoldAll",
    "when": "editorFocus"
},
Samuel Pinto
sumber
Apakah ini terbatas pada beberapa bahasa? tidak berfungsi untuk saya di OSX / naskah.
dcsan
1
Tinjau ini: ctrl+shift+alt+[ "Unfold all"Anda yang menulis [bukan ]. Koreksi saya jika saya salah.
fWd82
@ Dcsan juga tidak bekerja untuk saya di python / linux. Ctrl + K, Ctrl + 0 (nol) dan Ctrl + K, Ctrl + J bekerja meskipun sesuai jawaban yang diterima
cleary
itu tidak berfungsi
KansaiRobot
19

Jika tidak ada pintasan yang berfungsi (seperti untuk saya), sebagai solusinya Anda juga dapat membuka palet perintah ( Ctrl+ 3atau Lihat -> Palet Perintah ...) dan ketik fold all:

masukkan deskripsi gambar di sini

Jorn Vernee
sumber
Saya pikir saya tahu apa yang terjadi ... ia melipat blok hanya jika ada [+] yang tersedia, misalnya dengan python tidak melipat berikut: github.com/heldersepu/GMapCatcher/blob/master/gmapcatcher/…
Helder Sepulveda
@HelderSepulveda Yah, seharusnya lipatan memblokir komentar, tetapi python tidak memilikinya. Kode yang Anda tautkan menggunakan beberapa komentar baris tunggal.
Jorn Vernee
16

ctrl+ k+ 0: Lipat semua level (namespace, kelas, metode, blok)

ctrl+ k+ 1: namspace

ctrl+ k+ 2: kelas

ctrl+ k+ 3: metode

ctrl+ k+ 4: blokir

ctrl+ k+ [atau ]: blok kursor saat ini

ctrl+ k+ j: Buka Lipat

M Komaei
sumber
12

Runtuh sekarang didukung di rilis 1.0 :

Kode Sumber Lipat Shortcuts

Ada tindakan lipat baru untuk menutup wilayah kode sumber berdasarkan tingkat lipatannya.

Ada tindakan untuk melipat level 1 ( Ctrl+ K Ctrl+ 1) ke level 5 ( Ctrl+ K Ctrl+ 5). Untuk membuka, gunakan Buka Semua ( Ctrl+ Shift+ Alt+ ]).

Tindakan pelipatan tingkat tidak berlaku untuk wilayah yang mengandung kursor saat ini.

Saya punya masalah menemukan ]tombol di keyboard saya (tata letak Norwegia), dan dalam kasus saya itu adalah Åtombol. (Atau dua tombol ke kiri dan satu ke bawah mulai dari tombol backspace.)

Stian Standahl
sumber
8

Dengan JavaScript:

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

Pada versi 1.3.1 (2016-07-17), Block Collapse jauh lebih nyaman.

Setiap garis yang diikuti oleh garis indentasi akan memiliki karakter '-' untuk memungkinkan keruntuhan. Jika blok diciutkan, maka akan digantikan oleh karakter '+' yang akan membuka blok diciutkan.

( Ctrl+ Shift+ Alt+ ]) Masih akan mempengaruhi semua blok, menutup satu level. Setiap penggunaan berulang menutup satu tingkat lagi. The ( Ctrl+ Shift+ Alt+[ ) Bekerja dengan cara yang berlawanan.

Hore, block collapse akhirnya berhasil.

Miguelito
sumber
Menambahkan ke ini - jika Anda menghilangkan komentar di sekitar wilayah kode, Anda dapat menggunakan komentar untuk membangun wilayah khusus dalam kode Anda dan menciutkan seluruh segmen khusus! Fitur hebat!
Tim Cederquist
Ini tidak berfungsi pada 13 Juli 2019. Apakah ada jalan pintas keboard lain yang menggantikannya? (runtuh / meluas satu tingkat pada satu waktu? {
Martin
3

Kontrol kode lipat di dalam editor untuk memperluas node dokumen terstruktur XML dan kode sumber di VsCode

Tidak ada kiat teknis di sini, hanya penyesuaian preferensi VsCode yang sederhana.

Saya berhasil menunjukkan kontrol kode lipat selalu dalam VsCode dengan pergi ke Preferensi dan mencari 'lipat'. Sekarang cukup pilih untuk selalu menampilkan kontrol ini. Ini berfungsi dengan kode naskah dan HTML templat dalam solusi Angular 8 yang saya uji dengannya.

Ini diuji dengan VsCode Insiders 1.37.0 yang berjalan pada OS Windows 10.

Tampilkan kontrol kode lipat selalu dalam VsCode

Tore Aurstad
sumber
3

v1.42 menambahkan beberapa penyempurnaan yang bagus tentang bagaimana lipatan terlihat dan berfungsi. Lihat https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting :

Sorotan Kisaran Lipat

Rentang yang dilipat sekarang lebih mudah ditemukan berkat warna latar belakang untuk semua rentang yang dilipat.

lipat lipatan

Lipat warna highlight Tema: Gelap +

Fitur ini dikendalikan oleh editor pengaturan. Lipat Sorotan dan warna dapat disesuaikan dengan editor warna. LipatBackground.

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

Penyempurnaan Lipat

Shift + Clickpada indikator lipat pertama hanya melipat rentang bagian dalam. Shift + Clicklagi (ketika semua rentang dalam sudah dilipat) juga akan melipat induknya. Shift + Clicklagi membuka semua.

lipat klik shift

Saat menggunakan perintah Fold (kb ( editor.fold))] pada rentang yang sudah terlipat, rentang induk yang tidak dilipat berikutnya akan dilipat.

Menandai
sumber
2

Pada Mac, ini adalah kunci Perintah RHS, K ,, bukan di sebelah kiri untuk perintah pelipat kode.

Kalau tidak, tombol Command tangan kiri akan menghapus baris saat ini K,.

ReaddyEddy
sumber
2

Fitur ini sekarang didukung, sejak Visual Studio Code 1.17 . Untuk melipat / menutup blok kode Anda, cukup tambahkan tag wilayah, seperti //#region my block namedan//#endregion jika pengkodean dalam TypeScript / JavaScript.

Contoh:

Lipat Wilayah

Murilo Perrone
sumber
1

Ekstensi VSCode: Tingkat Lipat , satu tombol lipat ke tingkat yang Anda inginkan.

masukkan deskripsi gambar di sini

vikyd
sumber
0

Saya berharap Visual Studio Code dapat menangani:

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

Saat ini Visual Studio Code mengabaikannya dan tidak akan menutupnya. Sementara itu Notepad ++ dan PowerGUI menangani ini dengan baik.

Pembaruan: Saya baru saja melihat pembaruan untuk Visual Studio Code. Ini sekarang didukung!

Tuan Kesal
sumber
0

Catatan: pintasan ini hanya berfungsi seperti yang diharapkan jika Anda mengedit keybindings.json Anda

Saya tidak senang dengan pintasan default, saya ingin mereka bekerja sebagai berikut:

  • Lipat: Ctrl+ Alt+]
  • Lipat secara rekursif: Ctrl+ ⇧ Shift+ Alt+]
  • Lipat semua: Ctrl+ klaluCtrl +]
  • Buka: Ctrl+Alt +[
  • Buka lipatan secara rekursif: Ctrl+ ⇧ Shift+Alt +[
  • Buka semua: Ctrl+ klalu Ctrl+[

Untuk mengaturnya:

  • Buka Preferences: Open Keyboard Shortcuts (JSON)( Ctrl+ ⇧ Shift+ p)
  • Tambahkan potongan berikut ke file itu

    Sudah punya gantungan kunci khusus untuk lipatan / buka? Maka Anda harus menggantinya.

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