2013-04-16 16 views
14

E 'possibile modificare python.vim (e il file colorscheme corrispondente) in modo che le stringhe con quotatura tripla proprio sotto le istruzioni class e def (aka docstrings) vengano evidenziate come commenti durante la sintassi python evidenziando sotto vim?Evidenzia le didascalie python come commenti (evidenziazione della sintassi di 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

L'ultima pitone. vim versione 3.3.6 tratta questo problema di colorizzazione delle docstring in modo corretto. http://www.vim.org/scripts/script.php?script_id=790 –

risposta

15

è possibile aggiungere la seguente riga:

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

al tuo ~/.vim/dopo/sintassi/python.vim. È possibile creare questo file se non esiste.

+2

Grazie, funziona, ma causerà anche assegnazioni di stringhe come string_var = "" "blah blah" "" da evidenziare come commenti anche. Realizzato ora che la caratteristica di definizione di un python docstring "start" è una tripla citazione non preceduta da caratteri non di spaziatura all'inizio di una riga. La tua risposta mi ha portato ad esso, grazie. – silvernightstar

6

Di seguito ha lavorato per me:

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 

tratto da un python.vim modificato da here.

+0

Il collegamento al file di sintassi nel post è ora interrotto, quindi grazie per averlo catturato. Per completezza, potresti anche voler includere 'hi link pythongDocstring Comment' nel codice di esempio. – ches

0

PEP 257 prescrive di utilizzare "" "virgolette doppie" "" per docstring. Non è obbligatorio includere '' 'virgolette singole' '' o 'virgolette singole' in docstring. C'è una difficoltà che abbiamo docstring di classe, docstring di funzioni, docstring di moduli, docstring di attributi e docstrings aggiuntivi. Ecco perché ho deciso che è più facile considerare docstring come segue:

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

E poi:

HiLink pythonDocString  Comment 

Si possono vedere esempi in questo script (ricerca pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

Problemi correlati