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


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


7

Конечно:

set foldmethod=syntax

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

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


3
Чтобы это работало, файл синтаксиса, который вы используете, должен использовать syn-fold. в моей установке vim74 только около 10% файлов синтаксиса используют его.
Джаланб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.