Выделение строк документации Python в качестве комментариев (выделение синтаксиса vim)
Можно ли изменить python.vim (и соответствующий файл colorscheme) таким образом, чтобы строки с тройными кавычками прямо под операторами class и def (aka docstrings) были выделены как комментарии во время выделения синтаксиса python под vim?
class URLopener:
"""Class to open URLs.
This is a class rather than just a subroutine because we may need
more than one set of global protocol-specific options.
Note -- this is a base class for those who don't want the
automatic handling of errors type 302 (relocated) and 401
(authorization needed)."""
def addheader(self, *args):
"""Add a header to be used by the HTTP interface only
e.g. u.addheader('Accept', 'sound/basic')"""
# sample comment
3 ответа
Вы можете добавить следующую строку:
syn region Comment start=/"""/ end=/"""/
в ваш ~/.vim/after/syntax/python.vim. Вы можете создать этот файл, если он не существует.
Следующее работало для меня:
syn region pythonDocstring start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
syn region pythonDocstring start=+^\s*[uU]\?[rR]\?'''+ end=+'''+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
Взято из модифицированного python.vim отсюда.
PEP 257 предписывает использовать "" "тройные двойные кавычки" "" для строк документации. Не обязательно включать '' 'тройные одинарные кавычки' '' или 'одинарные двойные кавычки' в строки документации. Есть одна сложность в том, что у нас есть классные строки документов, функциональные строки документов, модульные строки документов, строки атрибутов и дополнительные строки документов. Вот почему я решил, что проще рассмотреть docstring следующим образом:
syn region pythonDocString start=+^\s*"""+ end=+"""+ keepend contains=...
А потом:
HiLink pythonDocString Comment
Вы можете увидеть примеры в этом скрипте (поиск pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim