ฉันจะยุบส่วนของรหัสใน Visual Studio Code สำหรับ Windows ได้อย่างไร


คำตอบ:


1351

พับได้ถูกรีดออกและจะดำเนินการตั้งแต่ตอนนี้ Visual Studio รหัสรุ่น 0.10.11 มีแป้นพิมพ์ลัดเหล่านี้:

  • พับส่วนที่ไม่ได้ย่อส่วนสุดที่เคอร์เซอร์:

    • Ctrl+ Shift+ [บน Windows และ Linux
    • + + [บน macOS
  • เปิดแฉ่บริเวณที่ยุบตัวที่เคอร์เซอร์:

    • Ctrl+ Shift+ ]บน Windows และ Linux
    • + + ]บน macOS
  • พับทั้งหมดพับทั้งหมดของภูมิภาคในเครื่องมือแก้ไข:

    • Ctrl+ ( K=> 0) (ศูนย์) บน Windows และ Linux
    • + ( K=> 0) (ศูนย์) บน macOS
  • เปิดออกทั้งหมดแผ่ออกทุกภูมิภาคในเครื่องมือแก้ไข:

    • Ctrl+ ( K=> J) บน Windows และ Linux
    • + ( K=> J) บน macOS

ข้อมูลอ้างอิง: https://code.visualstudio.com/docs/getstarted/keybindings


2
@DouglasGaskell ฉันทำผิดพลาดแบบเดียวกัน มันไม่ใช่ศูนย์ไม่ใช่Fold Levelคำตอบของ Michael Fulton ทำให้ฉันเข้าใจได้ง่ายขึ้น
Dan Marshall

1
ไม่ทราบว่าเป็นปัญหาของรหัสรุ่นปัญหารุ่นของ Windows หรืออย่างอื่น แต่บนพีซีของฉันใช้ได้กับ Right-Ctrl เท่านั้น คุณอาจต้องการทราบว่า!
ดาวอังคาร

6
โดยพื้นฐานแล้วมันคือ Ctrl + K, Ctrl + [n] โดยที่ n คือหมายเลขระดับสูงสุดที่คุณต้องการพับ ดังนั้นหากคุณกำลังมองหา Ctrl + M, Ctrl + O ของ VS (C #) บน VSCode มันจะเป็น Ctrl + K, Ctrl + 3
Yashash Gaurav

3
@ Preza8 กดF1และพิมพ์Fold or Unfold
AlexG

2
@ Preza8 นอกจากนี้ยังแสดงการล็อคปุ่มลัดที่ได้รับในปัจจุบันหากไม่มีการมอบหมายใด ๆ คุณสามารถกำหนดได้เอง นอกจากนี้อาจมีส่วนขยายเพื่อเพิ่มปุ่ม GUI ที่กำหนดเอง
AlexG

222

ในฐานะของรหัส Visual Studio รุ่น 1.12.0, เมษายน 2017 ดูการแก้ไขพื้นฐาน>ส่วนการพับในเอกสาร

ปุ่มเริ่มต้นคือ:

พับทั้งหมด: CTRL+ K, CTRL+ 0(ศูนย์)

ระดับการพับ [n]: CTRL+ K, CTRL+ [n]*

เปิดทั้งหมด: CTRL+ K, CTRL+J

ภูมิภาคพับ: CTRL+ K, CTRL+[

แฉภาค: CTRL+ K, CTRL+]

* ระดับการพับ: เพื่อพับทั้งหมดยกเว้นคลาสที่อยู่ด้านนอกส่วนใหญ่ให้ลองCTRL+ K, CTRL+1

Macs: ใช้แทนCTRL(ขอบคุณ Prajeet)


มันบันทึกและกู้คืนสถานะการพับระหว่าง IDE เริ่ม / ปิดเครื่องหรือไม่?
สีเขียว

เหตุผลบางctrl+k,ctrl+numอย่างใช้ได้กับตัวเลขที่สูงกว่า qwerty ที่ไม่ใช่ใน numpad
MotKohn

2
พับถึงระดับ [n] ไม่ได้พับส่วนที่เคอร์เซอร์อยู่ สิ่งนี้ทำให้ฉันคิดเสมอว่าไม่ได้ทำตามที่ฉันคาดไว้ มีตัวเลือกให้ปิดการทำงานนี้หรือไม่
RonnBlack

92

การพับรหัสตาม ภูมิภาคมาถึงด้วย v1.17 พับเอกสารภูมิภาค และv1.19และ1.23

[โดยทั่วไปคุณสามารถเพิ่มพื้นที่เช่น// region and // endregionไป//region and //endregionและมันก็ยังจะทำงาน.]

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`

สำคัญ: หากคุณไม่เห็นภาษาของคุณในรายการ ::

แต่ละภาษายังมีตัวอย่างสำหรับเครื่องหมาย พิมพ์ '#' และเรียกใช้การเติมโค้ดให้สมบูรณ์เพื่อดู หากต้องการกำหนดเครื่องหมายภูมิภาคให้กับภาษาของคุณให้ติดต่อผู้ให้บริการส่วนขยายภาษา

ดังนั้นพิมพ์#และกดCtrl+ Spaceเพื่อดูเครื่องหมายภูมิภาคสำหรับภาษาใด ๆ



1
// regionและ// endregionไม่ทำงานกับ VS Code เวอร์ชัน 1.22 (ยังไม่ได้ทดสอบเวอร์ชันด้านล่างหรือสูงกว่านั้น) แต่// #regionและใช้// #endregionงานได้ (หมายเหตุ '#' และพื้นที่ทั้งคู่) วิธีนี้ ESLint (ถ้าคุณใช้) จะไม่แสดงข้อผิดพลาดหากspaced-commentกฎเปิดอยู่ (เช่นไม่ได้ตั้งค่าเป็น 'ปิด' หรือ 0)
ozanmuyes

ใน CSS มันเป็นจริง/* #region Foo Bar */และ/* #endregion */
toddmo

1
@ozanmuyes มันขึ้นอยู่กับประเภทของไฟล์ (ภาษา) //regionและ//endregionสำหรับ JavaScript
lealceldeiro

ทำงานอย่างในแฟ้มหาง .yaml เช่นกันหากคุณติดตั้งต่อนักเทียบท่าไมโครซอฟท์: marketplace.visualstudio.com/...
โรเบิร์ต

v1.41: ฉันลองใช้ XML และใช้งานได้! <!-- #region --> elements <!-- #endregion -->. จะแสดงข้อความตาม #region ในส่วนที่พับ มันจะพับจาก #region ปัจจุบันไปยัง #endregion ที่เกี่ยวข้องได้อย่างเหมาะสมแม้ว่าจะมีซ้อนกันอยู่ก็ตาม - เช่นเดียวกับวงเล็บในสมการใด ๆ มันจดจำการตั้งค่าการพับสำหรับภูมิภาคที่ซ้อนกัน Ctrl + k + Ctrl + [และ Ctrl + k + Ctrl +] ปิด / เปิดการพับที่เคอร์เซอร์อย่างถูกต้อง (ซึ่งดูเหมือนจะย้อนกลับไปเล็กน้อยสำหรับฉัน แต่ whatevah) สิ่งที่ยอดเยี่ยม!
TonyG

73

คุณลักษณะนี้มีอยู่ในบิลด์มาตรฐานตอนนี้ ในการทำให้ตัวควบคุมการยุบ / ขยายปรากฏขึ้นคุณต้องวางเมาส์เหนือพื้นที่ทางด้านขวาของหมายเลขบรรทัดดังที่แสดงในภาพหน้าจอนี้:

ป้อนคำอธิบายภาพที่นี่


31

คุณควรเพิ่มการตั้งค่าผู้ใช้:

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

"editor.foldingStrategy" เป็นเคล็ดลับที่มีประโยชน์ที่สุดสำหรับฉัน ฉันกำลังแก้ไขรหัส Liquid (Shopify) และไม่สามารถพับโค้ดของฉันได้ เมื่อฉันเปลี่ยนจาก 'อัตโนมัติ' เป็น 'เยื้อง' รหัส VS ดูที่การเยื้องไม่ใช่ภาษาเฉพาะที่ฉันใช้มีประโยชน์มากขอบคุณ
เบนจามิน

24

ทางลัดเริ่มต้นสำหรับการยุบ / ขยายคือ:

Ctrl+ Shift+ [: "พับ"

Ctrl+ Shift+ Alt+ [: "พับทั้งหมด"

Ctrl+ Shift+ ]: "แฉ"

Ctrl+ Shift+ Alt+ ]: "คลายทั้งหมด"

หรือไปที่ keybindings.json และเปลี่ยนตามที่คุณต้องการ

ตัวอย่างเช่น:

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

จำกัด บางภาษาหรือไม่ ไม่ทำงานสำหรับฉันใน OSX / typescript
dcsan

1
โปรดตรวจสอบนี้: ctrl+shift+alt+[ "Unfold all"คุณเขียนแทน[ ]ถูกต้องฉันถ้าฉันผิด
fWd82

@dcsan มันไม่ทำงานสำหรับฉันใน python / linux เช่นกัน Ctrl + K, Ctrl + 0 (ศูนย์) และ Ctrl + K, Ctrl + J ทำงานตามคำตอบที่ยอมรับ
เคลียร์

มันไม่ทำงาน
KansaiRobot

19

หากไม่มีทางลัดใด ๆ ที่ทำงานได้ดี (เช่นสำหรับฉัน) คุณสามารถเปิดถาดคำสั่ง ( Ctrl+ 3หรือดู -> Command Palette ... ) และพิมพ์ในfold all:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันคิดว่าฉันคิดว่าจะเกิดอะไรขึ้น ... มันจะปิดกั้นเฉพาะในกรณีที่มี [+] อยู่ในไพ ธ อนตัวอย่างเช่นมันไม่ได้พับสิ่งต่อไปนี้: github.com/eldersepu/GMapCatcher/blob/master/gmapcatcher/ ......
Helder Sepulveda

@HelderSepulveda มันควรจะปิดกั้นความคิดเห็น แต่หลามไม่มีสิ่งเหล่านั้น รหัสที่คุณเชื่อมโยงใช้แสดงความคิดเห็นในบรรทัดเดียวหลายรายการ
Jorn Vernee

16

ctrl+ k+ 0: พับทุกระดับ (เนมสเปซ, คลาส, วิธี, บล็อก)

ctrl+ k+ 1: namspace

ctrl+ k+ 2: คลาส

ctrl+ k+ 3: วิธีการ

ctrl+ k+ 4: บล็อก

ctrl+ k+ [หรือ]: บล็อกเคอร์เซอร์ปัจจุบัน

ctrl+ k+ j: UnFold


12

รองรับการยุบในรีลีส 1.0 แล้ว :

ทางลัดการพับซอร์สโค้ด

มีการดำเนินการการพับใหม่เพื่อยุบพื้นที่ซอร์สโค้ดตามระดับการพับ

มีการกระทำที่จะพับระดับ 1 ( Ctrl+ K Ctrl+ 1) ถึงระดับ 5 ( Ctrl+ K Ctrl+ 5) หากต้องการตีแผ่ให้ใช้แฉทั้งหมด ( Ctrl+ Shift+ Alt+ ])

การดำเนินการการพับระดับไม่ได้ใช้กับภูมิภาคที่มีเคอร์เซอร์ปัจจุบัน

ฉันมีปัญหาในการค้นหา]ปุ่มบนแป้นพิมพ์ของฉัน (รูปแบบนอร์เวย์) และในกรณีของฉันมันคือÅปุ่ม (หรือสองปุ่มทางซ้ายและอีกหนึ่งปุ่มเริ่มจากปุ่ม Backspace)



4

ในเวอร์ชั่น 1.3.1 (2016-07-17) Block Collapse นั้นสะดวกสบายกว่ามาก

บรรทัดใดก็ตามที่ตามด้วยบรรทัดที่เยื้องจะมีอักขระ '-' เพื่ออนุญาตการยุบ หากบล็อกถูกยุบก็จะถูกแทนที่ด้วยอักขระ '+' ที่จะเปิดบล็อกที่ถูกยุบ

(ที่Ctrl+ Shift+ Alt+ ]) จะยังคงส่งผลกระทบต่อบล็อคทั้งหมดปิดระดับหนึ่ง การใช้งานซ้ำแต่ละครั้งจะปิดอีกหนึ่งระดับ ( Ctrl+ Shift+ Alt+ [) ทำงานในทิศทางตรงกันข้าม

ไชโยบล็อกยุบในที่สุดก็ใช้งานได้อย่างมีประโยชน์


การเพิ่มในส่วนนี้ - หากคุณลบความคิดเห็นรอบ ๆ รหัสคุณสามารถใช้ความคิดเห็นเพื่อสร้างภูมิภาคที่กำหนดเองในรหัสของคุณและยุบกลุ่มที่กำหนดเองทั้งหมด! คุณสมบัติที่ยอดเยี่ยม!
Tim Cederquist

มันใช้งานไม่ได้ตั้งแต่วันที่ 13 ก.ค. 2562 มีทางลัดอื่น ๆ ในคีบอร์ดแทนหรือไม่ (ยุบ / ขยายระดับหนึ่งครั้งหรือไม่ {
Martin

3

การควบคุมการพับโค้ดภายในเอดิเตอร์เพื่อขยายโหนดของเอกสาร XML ที่มีโครงสร้างและซอร์สโค้ดใน VsCode

ไม่มีเคล็ดลับทางเทคนิคที่นี่เพียงปรับการตั้งค่าของ VsCode อย่างง่าย

ฉันจัดการเพื่อแสดงการควบคุมการพับโค้ดเสมอใน VsCode โดยไปที่การตั้งค่าและค้นหา 'การพับ' ตอนนี้เพียงเลือกที่จะแสดงการควบคุมเหล่านี้เสมอ สิ่งนี้ใช้ได้กับรหัส typescript และ HTML ของเทมเพลตในโซลูชัน Angular 8 ที่ฉันทดสอบด้วย

สิ่งนี้ถูกทดสอบกับ VsCode Insiders 1.37.0 ที่ทำงานบนระบบปฏิบัติการ Windows 10

แสดงตัวควบคุมการพับโค้ดเสมอใน VsCode


3

v1.42 กำลังเพิ่มการปรับแต่งที่ดีให้กับการพับและฟังก์ชั่น ดูhttps://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#folded-range-highlighting :

เน้นช่วงที่พับ

ตอนนี้ช่วงพับจะง่ายต่อการค้นพบด้วยสีพื้นหลังสำหรับทุกช่วงพับ

ไฮไลท์พับ

ธีมสีไฮไลท์พับ: เข้ม +

ฟีเจอร์นี้ควบคุมโดยการตั้งค่า editor.foldingHighlight และสีสามารถปรับแต่งได้ด้วย color editor.foldBackground

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

การปรับแต่งการพับ

Shift + Clickบนตัวบ่งชี้การพับก่อนพับช่วงภายในเท่านั้น Shift + Clickอีกครั้ง (เมื่อช่วงภายในทั้งหมดถูกพับไว้แล้ว) ก็จะพับพาเรนต์ Shift + Clickแผ่ออกทั้งหมดอีกครั้ง

คลิกเปลี่ยนเป็นกะ

เมื่อใช้คำสั่ง Fold (kb ( editor.fold))] กับช่วงที่พับแล้วช่วงพาเรนต์ที่กางออกถัดไปจะถูกพับ


2

สำหรับ Mac มันคือคีย์คำสั่ง RHS Kไม่ใช่สำหรับคำสั่งการพับโค้ด

Kมิฉะนั้นคำสั่งคีย์ซ้ายมือจะลบบรรทัดปัจจุบัน


2

คุณลักษณะนี้จะสนับสนุนในขณะนี้เนื่องจากVisual Studio รหัส 1.17 หากต้องการพับ / ยุบบล็อครหัสของคุณเพียงเพิ่มแท็กภูมิภาคเช่น//#region my block nameและ//#endregionหากการเข้ารหัสใน TypeScript / JavaScript

ตัวอย่าง:

ภูมิภาคพับ



0

ฉันหวังว่า Visual Studio Code สามารถจัดการได้:

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

ตอนนี้ Visual Studio Code จะไม่สนใจและจะไม่ยุบลงไป ในขณะเดียวกัน Notepad ++ และ PowerGUI ก็จัดการได้ดี

อัปเดต: ฉันเพิ่งสังเกตเห็นการอัปเดตสำหรับ Visual Studio Code ตอนนี้ได้รับการสนับสนุนแล้ว!


0

หมายเหตุ:ทางลัดเหล่านี้ใช้งานได้ตามที่คาดไว้หากคุณแก้ไข keybindings.json

ฉันไม่พอใจกับทางลัดเริ่มต้นฉันต้องการให้พวกเขาทำงานดังต่อไปนี้:

  • พับ: Ctrl+ Alt+]
  • พับซ้ำ: Ctrl+ ⇧ Shift+ Alt+]
  • พับทั้งหมด: Ctrl+ kจากนั้นCtrl+]
  • แฉ: Ctrl+ Alt+[
  • แฉซ้ำ: Ctrl+ ⇧ Shift+ Alt+[
  • เปิดทั้งหมด: Ctrl+ kแล้วCtrl+[

วิธีตั้งค่า:

  • เปิดPreferences: Open Keyboard Shortcuts (JSON)( Ctrl+ ⇧ Shift+ p)
  • เพิ่มตัวอย่างต่อไปนี้ในไฟล์นั้น

    มีปุ่มลัดที่กำหนดเองสำหรับการพับ / เปิดออกหรือยัง จากนั้นคุณจะต้องแทนที่พวกเขา

    {
        "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"
    },
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.