ความสับสนเกี่ยวกับการพับเป็นกลุ่ม - จะปิดใช้งานได้อย่างไร?


116
  1. เมื่อฉันเปิดไฟล์จะมีลักษณะดังนี้: ใส่คำอธิบายภาพที่นี่ หรือแม้แต่สิ่งนี้ ใส่คำอธิบายภาพที่นี่
  2. เมื่อฉันเปิดฝาพับทั้งหมดมันจะปิดอีกครั้งเมื่อฉันไปที่บัฟเฟอร์อื่นและกลับมา
  3. เพื่อให้สามารถใช้งานได้ฉันต้องสมัครzRทุกครั้งเมื่อเปิดบัฟเฟอร์

ฉันตั้งค่าไว้ใน.vimrc:

set foldlevelstart=99
set foldlevel=99

โปรดชี้ฉันเกี่ยวกับวิธีปิดการใช้งานการพับหรืออย่างน้อยก็ทำให้การนำทางไปยังบัฟเฟอร์อื่นไม่ให้ปิดที่เปิดอยู่


2
เมื่อเริ่มต้นกลุ่มแรกให้เรียกใช้:set foldlevelและ:set foldlevelstartดูว่ามีการตั้งค่าไว้ที่อะไร การคาดเดาโดยพื้นฐานของฉันคือค่าเหล่านี้จะถูกรีเซ็ตที่ไหนสักแห่ง เมื่อฉันเพิ่มค่าเหล่านั้นลงใน vimrc ของฉันทุกอย่างจะเป็นไปตามที่คาดไว้
cledoux

คำตอบ:


209

คุณไม่ได้โดดเดี่ยว.

set nofoldenable    " disable folding

7
โปรดทราบว่าสิ่งนี้ไม่มีผลกับ vimdiff เมื่อกลุ่มสร้างหน้าต่างที่แตกต่างดูเหมือนว่าจะแทนที่foldenableตัวเลือก วิธีแก้ปัญหาเดียวที่ฉันพบคือตั้งค่าcontextตัวเลือกย่อยdiffoptเป็นสิ่งที่ใหญ่มาก เช่นset diffopt+=context:99999
Laurence Gonsalves

14
มันก็เป็นกลุ่ม-markdown หากต้องการปิดใช้งานการพับโดย vim-markdown ให้ใช้let g:vim_markdown_folding_disabled=1
BenjaminGolder

1
@BenjaminGolder เราได้แก้ไขที่: github.com/plasticboy/vim-markdown/pull/131
Ciro Santilli 郝海东郝海东冠状病六四事件

2
ฉันชอบวิธีแก้ปัญหาของ glts ด้านล่างดีกว่า: ใช้ 'zi' เพื่อสลับพับได้ หนึ่งในปัญหาใหญ่ไม่กี่อย่างกับกลุ่มคือจำนวนสิ่งที่ต้องจำ สิ่งเล็กน้อยเช่น 'zi' แทนที่จะเป็น 'พับได้' ถูกส่งมาจากพระเจ้า!
Thierry

1
ดูเหมือนจะไม่ได้ผลสำหรับฉัน :( รหัส python ยังคงพับอยู่
weima

55

วิธีที่ง่ายที่สุดในการปิดการใช้งาน (และเปิดใช้งาน) ziพับเกี่ยวกับการบินคือ

ziเป็นคำสั่งโหมดปกติที่สลับเช่นเดียวกับ'foldenable':set foldenable!

ช่วยในการจำ: "fold i nvert" ดู:h zi.


44

เพิ่มset nofoldenableที่คุณ ~ / .vimrc ที่จะปิดการใช้งานพับ


@ แม็กนัส: จงใจทำvimdiffเพื่อหลีกเลี่ยงการแสดงจำนวนบรรทัดที่เหมือนกัน กรณีการใช้งานแตกต่างกันดังนั้นจึงไม่ได้รับผลกระทบจากไฟล์nofoldenable. zRเปิดพับทั้งหมด vimdiffผมไม่ทราบว่าเกี่ยวกับการตั้งค่าที่ปิดใช้งานพับ (เนื่องจากเป็นที่เดียวที่การพับไม่ทำให้ฉันรำคาญ)
DevSolar

16

นี่คือบทความที่สรุปสั้น ๆ และกระชับว่าทำไมการพับจึงดูเท่ เหตุผลประการหนึ่งคือการพับทำให้การนำทางไฟล์ขนาดใหญ่เป็นเรื่องง่าย

หากคุณต้องการเปิดใช้งานการพับและเพียงแค่เริ่มต้นด้วยการพับทั้งหมดเสมอ vim wiki จะบอกวิธีการ วิธีที่น่าสนใจสำหรับคุณน่าจะเป็นวิธี autocommand

" Tweak the event and filetypes matched to your liking. 
" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,perl normal zR

ฉันขอแนะนำให้ค้นหาวิธีพับแบบกำหนดเองสำหรับภาษาที่คุณใช้ เพียงแค่ googling "vim <insert language here> folding" ก็น่าจะมีตัวเลือกมากมาย เล่นกับตัวเลือกต่างๆจนกว่าคุณจะพบวิธีการพับที่คุณชอบ


4

ฉันได้เพิ่มบรรทัดนี้ลงใน.vimrcไฟล์ของฉันแล้วเพราะฉันมีปัญหาเดียวกัน:

autocmd FileType * exe "normal zR"

คำสั่งนี้จะดำเนินการทุกครั้งที่คุณเปิดไฟล์โดยอัตโนมัติ ดังนั้นคุณจะไม่เห็นจุดบกพร่องและคุณสมบัติการพับจะไม่หายไปด้วย)


3

เพียงเพิ่มอีกหนึ่งรายการเพื่อให้เป็นประเด็นของการสนทนา

ในการเปิดใช้งานการพับโค้ด:

:set foldenable หรือเรียกสั้น ๆ ว่า :set fen

ในการปิดการพับโค้ด:

:set nofoldenable หรือเรียกสั้น ๆ ว่า :set nofen

เมื่อคุณเปิดใช้งาน codefolding คุณจะมีคำสั่งทั้งหมดตามzf,zo etcที่คุณต้องการตามการตั้งค่าของ:set fdm=xxxxค่าทั่วไปexpr,syntax,manual etc.


1

ขออภัยหากฉันกำลังตอบคำถามที่เกี่ยวข้อง แต่ฉันพบว่ามีประโยชน์ในการแสดงไฟล์สองไฟล์ควบคู่ไปกับการปิดการพับด้วยสิ่งนี้:

vim "+set nofen" -O file1 file2

1

Vim ทำให้ปิดการพับได้ยากอย่างน่าอัศจรรย์โดยเฉพาะเมื่อใช้ vimdiff
วิธีแก้ปัญหาที่โพสต์ข้างต้นไม่ได้ผลสำหรับฉัน แต่สิ่งนี้ทำได้ (เพิ่มไปที่ ~ / .vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

1

ผมตั้งfoldlevel=20, และฉันจะใช้foldlevelstart=20 foldmethod=syntaxช่วยฉันทำงานกับการพับที่ถูกต้องเป็นกลุ่ม

set nofoldenable ปิดการพับ แต่บางครั้งฉันก็ต้องการมัน

vim.wikia

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