İşlevleri otomatik olarak nasıl katlarsınız?


12

Vim katlama işlevlerini işlev bildiriminin sözdizimine göre yapmanın bir yolu var mı?

Örneğin, vim'e sahip olmak aşağıdaki gibi bir işlevi döndürür:

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

Bunun içine:

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

Bunu gerçekleştirmek için .vimrc dosyamın içine koyabileceğim bazı komutlar veya bir işlev var mı?

Yanıtlar:


12

Örneğinizin kod bloklarının doğru girintisine dayanan Python'da olduğu göz önüne alındığında, katlanmayı buna dayandırmak yeterlidir:

:set foldmethod=indent

Mevcut görmem katlama çeşitleri hakkında daha fazla bilgi için : Yardım foldmethod


7

Elbette:

set foldmethod=syntax

Daha sonra zcbir kapağı kapatmak, bir kapağı zoaçmak veya zadeğiştirmek için kullanabilirsiniz.

Ne yazık ki Vim, varsayılan olarak kullandığınız Python için katlama bilgisi içermiyor. Bununla birlikte , birçok harici kaynaktan birini kullanabilirsiniz .


3
Bunun çalışması için kullandığınız sözdizimi dosyasını kullanmalısınız syn-fold. vim74 kurulumumda, sözdizimi dosyalarının yalnızca% 10'u onu kullanıyor.
jalanb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.