如何自动折叠功能?


12

有没有一种方法可以根据函数声明的语法来制作Vim折叠函数?

例如,让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文件中使用一些命令或函数来完成此操作吗?

Answers:


12

鉴于您的示例是在Python中进行的,它依赖于正确的代码块缩进,因此可以在此基础上进行折叠了:

:set foldmethod=indent

有关可用折叠方式的更多信息,请参见:help foldmethod


7

当然:

set foldmethod=syntax

然后,您可以使用zc来关闭折页,zo打开折页或za切换。

不幸的是,Vim默认不包含您似乎正在使用的Python折叠信息。但是,您可以使用许多外部资源之一


3
为了使此功能正常工作,您正在使用的语法文件应使用syn-fold。在我安装的vim74中,只有大约10%的语法文件使用它。
jalanb'2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.