2013-04-16 10 views
14

Czy można zmodyfikować python.vim (i odpowiedni plik colorscheme), że potrójnie cytowane ciągi bezpośrednio pod instrukcjami klasy i def (aka docstrings) będą podświetlone jako komentarze podczas składni pythona podkreślając pod vim?Podświetlaj polecenia Pythona jako komentarze (podświetlanie składni vima)

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

Najnowszą pytona. vim wersja 3.3.6 zajmuje się tym problemem poprawnie kolorowania docstrukcji. http://www.vim.org/scripts/script.php?script_id=790 –

Odpowiedz

15

można dodać następującą linię:

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

do ~/.vim/after/syntax/python.vim. Możesz utworzyć ten plik, jeśli nie istnieje.

+2

Dzięki, to działa, ale spowoduje również przypisanie ciągów, takich jak string_var = "" "blah blah" "" do wyróżnienia jako komentarze także. Zdałem sobie teraz sprawę, że cechą definującą "zapytanie" w pythonach jest "potrójny cudzysłów" nie poprzedzony znakami spoza białych znaków na początku wiersza. Twoja odpowiedź doprowadziła mnie do tego, dzięki. – silvernightstar

6

Następujące pracował dla mnie:

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 

Zrobione ze zmodyfikowanym python.vim z here.

+0

Link do pliku składni we wpisie jest teraz uszkodzony, więc dziękuję za przechwycenie tego. Dla kompletności, możesz również dodać "hi link pythongDocstring Comment" w przykładowym kodzie. – ches

0

PEP 257 nakazuje użycie "" "potrójnych podwójnych cytatów" "" dla docstrings. Nie jest obowiązkowe umieszczanie w documentach "pojedynczych podwójnych cudzysłowów". Jest jedna trudność, że mamy klasowe docstrukcje, funkcje docstrukcji, docstrukcje modułów, docstrukcje atrybutów i dodatkowe docstrukcje. Dlatego zdecydowałem, że łatwiej rozważyć docstring następująco:

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

A potem:

HiLink pythonDocString  Comment 

można zobaczyć przykłady w tym skrypcie (wyszukiwanie pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

Powiązane problemy