Кто-либо знает о методе или возможно плагине, который автоматически свернет длинные docstrings в Python? У меня есть docstrings в моем коде, которые охватывают несколько страниц, таким образом, это неприятно, чтобы продолжать пролистывать их. Другая хитрая часть - то, что существует встроенный Python, тестирующий код в docstrings, так, чтобы мог бы сделать парсинг их трудным. Обратите внимание, что я только должен автоматически свернуть весь docstring, независимо от того, что находится в нем.
Это немного грязный прием, но вы можете просмотреть файл синтаксиса Python (: sp $ VIMRUNTIME / syntax / python.vim
) и найти все области синтаксиса для строк в тройных кавычках. (найдите '' '
и "" "
) и добавьте ключевое слово fold
в конец этих операторов. Затем просто установите foldmethod = syntax
для файлов Python и комментарии должны быть свернуты.
Я не уверен насчет плагина или автоматизации, но если вы наберете zf /
, вы сможете найти что-то, и оно будет свернуто до следующего экземпляра. . Итак, в документе, подобном следующему (где [] - курсор):
def foo():
"""[]
Some long docstring
that takes up many
lines
"""
pass
Сначала посмотрите на edit2, чтобы увидеть обновленную строку поиска!
Если вы используете команду zf / "" "[ENTER]
, она должна свернуть все от текущей строки (начало строки документации) до следующего появления " ""
, который должен быть концом строки документации.
Я знаю, что это не автоматизация, но, возможно, это поможет тем временем или приведет вас к правильному пути к автоматизации. См. Edit2 для лучшей функции поиска, хотя я все еще не знаю, как автоматизировать.
Надеюсь, это поможет.
Изменить : в результате вы можете искать любую строку документации с помощью / "" "\ _. \ {-}" ""
, хотя это также вернет код в строке документации . Чтобы найти определение функции, за которым следует строка документации, вы можете использовать / def \ _. \ {-} "" "\ _. \ {-}" ""
, хотя это нарушает определение внутри строка документации.
Edit2 : На самом деле, еще немного поигравшись с регулярными выражениями, я пришел к следующему: / def. \ {-}): \ _ s * "" "\ _. \ {-}" ""
, который должен найти любую функцию, за которой следует строка документации. Он ищет def
, за которым следуют любые символы, затем ):
, за которым следует новая строка и / или пробел, за которым следует "" "
, за которым следует любое количество строк, чем следующая "" "
, но всегда гарантирует, что вторая тройная кавычка находится сразу после первой.
В вашем .vimrc добавьте:
" folding
set foldmethod=indent
Это будет автоматически сворачиваться при каждом отступе, который в Python преобразуется в строки документации. Работает ОЧЕНЬ-ОЧЕНЬ красиво. Попробуйте. Приведенный выше ответ верен, но требует нескольких нажатий клавиш (мля!)
Вы можете сделать это с помощью : set foldmethod = marker foldmarker = "" "," ""
, я думаю. Я не тестировал его, но это должно помочь. Аргументы для foldmarker - это маркеры начала и конца.