Подтвердить что ты не робот

Коды Python, складывающиеся с Vim

Я попробовал кучу сменных плагинов кода 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.

4b9b3361

Ответ 1

Описание

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

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

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

Ответ 2

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

см. справку по ее настройке.

Ответ 3

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

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