vim: cómo tratar tres citas seguidas como un comentario en lugar de una cadena

3

Yo uso python y en python, tres comillas seguidas

"""

o

'''

significa un comentario de bloque, y un comentario normal es solo un hashtag. (#) Quiero que los comentarios sean de color gris y las cadenas de color naranja. Estoy usando el esquema de colores murphy. Hice un archivo murphy-mine.vim y le agregué esto

hi Comment term=bold     ctermfg=Grey     guifg=Grey
hi String  term=bold     ctermfg=LightRed guifg=Orange

Pero gvim ve """y '''como una cadena en la sintaxis de Python en lugar de tratarlo como un comentario (comentario de bloque). ¿Hay alguna forma de decirle a gvim que vea """y '''como comentario / comentario de bloque en lugar de una cadena?

usuario216485
fuente
2
Las cadenas de documentos son cadenas, por lo que es natural que Vim las trate como tales. Esos son para documentación, no para comentar bloques enteros. Si quieres comentar algún código, úsalo # comments.
romainl

Respuestas:

3

Puede poner lo siguiente en ~/.vim/after/syntax/python.vim(tomado de aquí :

" Highlight docstrings as comments, not string.
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

hi def link pythonDocstring pythonComment
Ingo Karkat
fuente
¿Por qué se syn regionrepiten las dos líneas? Se ven idénticos a mí ..
lorenzog
@lorenzog: Uno es para cadenas de comillas simples y el otro para cadenas de comillas dobles. Sutil, correcto :-)
Ingo Karkat
0

PEP 257 prescribe el uso de "" "comillas dobles triples" "" para las cadenas de documentos. No es obligatorio incluir '' 'comillas simples triples' '' o "comillas simples dobles" en las cadenas de documentos. Hay una dificultad: tenemos cadenas de documentos de clase, cadenas de documentos de funciones, cadenas de documentos de módulos, cadenas de documentos de atributos y cadenas de documentos adicionales. Es por eso que decidí que es más fácil considerar docstring de la siguiente manera:

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

Y entonces:

HiLink pythonDocString        Comment

Puede ver ejemplos en este script (busque pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

Andrey
fuente