ฉันจะตั้งค่า foldlevelstart เป็นกลุ่มได้โดยไม่ต้องพับอะไรในตอนแรกยังอนุญาตให้ zr ทำงานได้ทันที?


8

ในกลุ่มฉันมักจะตั้งfoldmethodให้indentเป็นประเภทไฟล์ส่วนใหญ่ โดยทั่วไปแล้วฉันชอบเปิดไฟล์ด้วยการเปิดทั้งหมด อย่างไรก็ตามมันมีประโยชน์ที่จะเริ่มใช้ทันทีzmเพื่อเริ่มการปิดตาทั่วทั้งไฟล์ครั้งละหนึ่งระดับช่วยให้ฉันเห็นโครงสร้างโดยรวมของไฟล์โดยไม่มีรายละเอียดเข้ามา

วิธีแก้ปัญหาทั่วไปเดียวที่ฉันพบคือตั้งค่าfoldlevelstartเป็นจำนวนที่สูงมากเช่น 99 เพื่อให้แน่ใจว่าไฟล์ทั้งหมด (โดยคำนึงถึงไฟล์ที่แตกต่างกันจะมีการเยื้องสูงสุดในระดับต่าง ๆ ) เริ่มคลี่ออกอย่างสมบูรณ์ อย่างไรก็ตามฉันต้องใช้zmซ้ำ ๆ เพื่อลดfoldlevelระดับการพับไฟล์สูงสุดซึ่งโดยปกติจะน้อยกว่า 99 ซึ่งยุ่งยากและใช้งานไม่ได้ ฉันสามารถตั้งค่าfoldlevelด้วยตนเองโดยใช้บรรทัดคำสั่ง vim แต่ฉันยังต้องทราบการเยื้องสูงสุดในไฟล์

มีวิธีปฏิบัติในการเปิดไฟล์ที่มีการfoldlevelตั้งค่าให้มากกว่าหนึ่งระดับเยื้องสูงสุด / เท่าในปัจจุบันในตัวไฟล์เองหรือไม่?

ตัวอย่างเช่นกำหนดไฟล์ต่อไปนี้:

a
  b
    c
      d1
      d2
    e
      f1
      f2

ปุ่มกดแรกของzmจะแสดงสิ่งนี้:

a
  b
    c
+--  2 lines: d1------
    e
+--  2 lines: f1------

(อย่างไรก็ตามโปรดทราบว่าควรใช้กับกรณีทั่วไปโดยที่การเยื้องสูงสุดเริ่มต้นของไฟล์อาจเป็นค่าใดก็ได้)


1
คุณกำลังสับสนzrกับzm; ด้านหลังช่วยลดระดับการพับ
Ingo Karkat

@IngoKarkat คุณพูดถูกฉันเป็น ขออภัยในความสับสน - ฉันพบคอมโบหลักเหล่านั้นตอบโต้ได้ง่ายอยู่เสมอ ฉันแก้ไขคำถามแล้ว
Andrew Ferrier

"ฉันมักจะพบคอมโบหลักเหล่านั้นที่ต่อต้านได้ง่าย" มันควรจะหมายถึงzm= fold more (ลบ foldlevel) และzr= fold less (เพิ่ม foldlevel)
wisbucky

คำตอบ:


9

นี่เป็นการค้นหา foldlevel สูงสุดในไฟล์ปัจจุบัน:

:let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))

หากต้องการตั้งค่านี้โดยอัตโนมัติคุณสามารถใช้:autocmd:

:autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))

1
Ingo สมบูรณ์แบบนั่นคือสิ่งที่ฉันกำลังมองหา ขอบคุณ ความอัปยศfoldlevelstartไม่มีตัวเลือกเช่นนี้
Andrew Ferrier

ดูเหมือนว่านี่จะไม่ทำงานบน Cygwin Vim ฉันfoldlevelคือ 0 และfoldlevelstart-1 เมื่อฉันเปิดไฟล์ด้วยการตั้งค่าเหล่านั้น
CMCDragonkai

0

แทนที่จะใช้zrให้ใช้zRซึ่งจะเปิดทั้งหมดเท่า ในทำนองเดียวกันzMจะปิดการพับทั้งหมด


แกรี่ขอบคุณ ใกล้แล้ว แต่ไม่ได้ทำในสิ่งที่ฉันอธิบาย ฉันต้องการคำสั่งที่ลดระดับการพับโดยหนึ่ง แต่จากระดับการพับสูงสุดที่เกี่ยวข้องกับไฟล์ที่เป็นปัญหา ในการทำเช่นนั้นฉันต้องใช้ zM เพื่อลดระดับเป็น 0 จากนั้น zr ซ้ำ ๆ เพื่อเปิดรายละเอียดเพิ่มเติม ฉันกำลังมองหาหนึ่งชุดคำสั่ง / คีย์
Andrew Ferrier

2
คุณสามารถทำได้zR(ตั้งค่าระดับพับเป็นระดับสูงสุด) จากนั้นzmจะทำงาน มันเป็นเพียงขั้นตอนเดียว
wisbucky

0

ตัวเลือกนี้set nofoldenableช่วยให้คุณสามารถเริ่มปิดไฟล์โดยเปิดทั้งหมดได้


นั่นไม่ใช่คำถามที่ฉันถาม ฉันต้องการเปิดใช้งานการพับ
Andrew Ferrier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.