คุณพับฟังก์ชั่นอัตโนมัติได้อย่างไร?


12

มีวิธีการทำฟังก์ชั่น Vim fold บนพื้นฐานของไวยากรณ์ของการประกาศฟังก์ชั่นหรือไม่?

เช่นมี vim เปิดฟังก์ชั่นเช่นนี้

def foobar(foo,bar):
  if foo > bar:
    print "foo"
  elif foo < bar:
    print "bar"
  elif foo == bar:
    print "foobar"

เป็นนี้

+----- 7 lines: def foobar(foo,bar): -------------------------------------------------------------

มีชุดคำสั่งหรือฟังก์ชันที่ฉันสามารถใส่ลงในไฟล์. vimrc ของฉันเพื่อใช้ในการทำสิ่งนี้หรือไม่?

คำตอบ:


12

ระบุว่าตัวอย่างของคุณอยู่ใน Python ซึ่งอาศัยการย่อหน้าที่ถูกต้องของการบล็อกโค้ดมันก็เพียงพอแล้วที่จะทำการพับลงบนฐานนั้น:

:set foldmethod=indent

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความหลากหลายของการพับที่มีให้ดู: ช่วยวิธีพับ


7

แน่นอนว่า:

set foldmethod=syntax

จากนั้นคุณสามารถใช้zcเพื่อปิดการพับzoเพื่อเปิดหนึ่งหรือzaเพื่อสลับ

น่าเสียดายที่ Vim ไม่ได้รวมข้อมูลการพับสำหรับ Python ตามค่าเริ่มต้นซึ่งคุณดูเหมือนจะใช้อยู่ คุณสามารถใช้หนึ่งในแหล่งข้อมูลภายนอกมากแต่


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