Как вы сложите функции автоматически?

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

Для получения более подробной информации о разновидностях складной имеющийся См : помощь foldmethod

jalanb
источник
7

Конечно:

set foldmethod=syntax

Затем вы можете использовать, zcчтобы закрыть складку, zoоткрыть ее или zaпереключить.

К сожалению, Vim по умолчанию не включает информацию о свертывании для Python, которую вы, похоже, используете. Однако вы можете использовать один из множества внешних ресурсов .

Дверная ручка
источник
3
Чтобы это работало, файл синтаксиса, который вы используете, должен использовать syn-fold. в моей установке vim74 только около 10% файлов синтаксиса используют его.
Джаланб