Bagaimana Anda melipat fungsi secara otomatis?

12

Apakah ada cara untuk membuat fungsi lipatan Vim berdasarkan sintaks deklarasi fungsi?

Misalnya memiliki vim mengubah fungsi seperti ini:

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

Ke dalam ini:

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

Apakah ada beberapa set perintah atau fungsi yang dapat saya gunakan untuk file .vimrc saya untuk melakukan ini?

Dom
sumber

Jawaban:

12

Mengingat bahwa contoh Anda adalah dalam Python, yang bergantung pada lekukan yang benar dari blok kode, cukup untuk melipatgandakan itu:

:set foldmethod=indent

Untuk informasi lebih lanjut tentang varietas lipatan yang tersedia, lihat : bantu metode lipatan

jalanb
sumber
7

Tentu:

set foldmethod=syntax

Anda kemudian dapat menggunakan zcuntuk menutup flip, zountuk membuka flip , atau zauntuk beralih.

Sayangnya, Vim tidak memasukkan informasi lipat untuk Python secara default, yang tampaknya Anda gunakan. Anda dapat menggunakan salah satu dari banyak sumber daya eksternal .

Gagang pintu
sumber
3
Agar ini berfungsi file sintaks yang Anda gunakan harus memanfaatkan syn-fold. dalam instalasi vim74 saya, hanya sekitar 10% dari file sintaks yang menggunakannya.
jalanb