2013-04-16 2 views
14

Можно ли изменить python.vim (и соответствующий файл цветов) так, чтобы строки с тройным кавычком прямо под инструкциями класса и def (aka docstrings) будут выделены как комментарии во время синтаксиса python подсветка под vim?Выделите python docstrings как комментарии (выделение синтаксиса 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 
+0

последняя питона. Версия vim 3.3.6 справляется с этой проблемой правильной раскраски docstrings. http://www.vim.org/scripts/script.php?script_id=790 –

ответ

15

вы можете добавить следующую строку:

syn region Comment start=/"""/ end=/"""/ 

в ваш ~/.vim/после/синтаксис/python.vim. Вы можете создать этот файл, если он не существует.

+2

Спасибо, это действительно работает, но оно также приведет к назначению строк, таких как string_var = "" "blah blah" "", которые будут выделены в качестве комментариев также. Понятно, что определяющей характеристикой «start» docstring python является тройная кавычка, которой не предшествуют символы без пробелов в начале строки. Спасибо, ответ. – silvernightstar

6

Следующая работал для меня:

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 из here.

+0

Ссылка на файл синтаксиса в сообщении теперь сломана, поэтому благодарим за это. Для полноты вам также может потребоваться включить «hi link pythongDocstring Comment» в образец кода. – ches

0

PEP 257 предписывает использовать "" "тройные двойные кавычки" "" для docstrings. Не обязательно включать «тройные одинарные кавычки» или «одиночные двойные кавычки» в докстроны. Существует одна трудность, заключающаяся в том, что у нас есть классные докстры, функции docstrings, docstrings модуля, атрибуты docstrings и дополнительные docstrings. Вот почему я решил, что проще рассмотреть строку документации следующим образом:

syn region pythonDocString start=+^\s*"""+ end=+"""+ keepend contains=... 

И потом:

HiLink pythonDocString  Comment 

Вы можете увидеть примеры в этом сценарии (поиск pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

Смежные вопросы