Свертывание кода Python с помощью Vim - PullRequest
15 голосов
/ 15 сентября 2011

Я перепробовал несколько плагинов для свертывания кода Python и видел, как один раз этот вопрос задавали здесь , но все они не кажутся слишком полезными для достижения свертывания кода Python таким образом:

class myClass(models.Model):
    [folded code]

    class Meta:
        [folded code]

    def __unicode__(self):
        [folded code]

    def save(self, *args, **kwargs):
        [folded code]

Итак, мой вопрос: Есть ли какой-нибудь плагин для свертывания кода Python, который может это сделать? Мне пока не удалось найти ни одного, и я попробовал довольно многотаких плагинов Vim уже.

Ответы [ 3 ]

6 голосов
/ 15 сентября 2011

описание

Из-за зависимости от значительных пробелов, а не от явных разделителей блоков, правильное свертывание кода Python может быть сложным. Определение синтаксиса Python, поставляемое в комплекте с Vim, вообще не содержит никаких директив свертывания, и самый простой обходной путь - :set foldmethod=indent, что обычно приводит к сворачиванию намного больше, чем вы действительно хотите.

Нет недостатка в плагинах Vim для улучшенного свертывания Python, но большинство, похоже, страдают от алгоритмов, которые объединяются с причудливыми, неразрешимыми ошибками в угловых случаях. SimpylFold стремится быть именно тем, что предлагает его название: простое, правильное сворачивание для Python. Это не что иное, как должно быть: оно правильно складывает определения классов и функций / методов и оставляет ваши циклы и условные блоки нетронутыми. В этом нет никакой необходимости: не нужно разбираться с несвязанными опциями (что делают несколько других плагинов), нет выбора алгоритмов, чтобы почесать голову (потому что есть только один, который является правильным); это просто работает, просто.

http://www.vim.org/scripts/script.php?script_id=3723

0 голосов
/ 18 апреля 2013

Я искал то же самое, метод сворачивания для python, который оставляет всю сигнатуру метода, даже если он занимает несколько строк.Этот скрипт работал для меня.Однако, чтобы заставить работать многострочные подписи, вам нужно добавить «let g: ifold_mode = 2» в ваш файл .vimrc.

Я не очень долго использовал этот скрипт, поэтомудругие проблемы с этим.Удачи!

0 голосов
/ 15 сентября 2011

Я почти всегда использую set foldmethod=indent, и он делает почти то, что вы хотите (кроме свертывания глобальных переменных класса).

см. Справку о том, как его настроить.

...