Estoy luchando con el aprendizaje de expresiones regulares vim (tampoco conozco muy bien otra expresión regular), por lo que el problema principal es definir expresiones regulares que coincidan
some_function_call(simple_value, keyword=value)
palabra clave en este ejemplo.
Por lo tanto, debe coincidir con una palabra si está dentro de parens y tiene el mismo signo después.
El siguiente problema es cómo definir archivos de sintaxis en vim. Agradecería ayuda con eso, pero no debería ser tan difícil de aprender, así que probablemente pueda hacerlo por mi cuenta.
EDITAR en función de la respuesta He hecho mi propio script de sintaxis para python. Siéntase libre de probarlo. ingrese la descripción del enlace aquí
syntax-highlighting
regular-expression
filetype-python
usuario1685095
fuente
fuente

Respuestas:
Con estas configuraciones:
Yo obtengo:
Aquí:
containsopción me permite anidar llamadas de función.\i*) seguidos de=, pero no==, para que las pruebas de igualdad no coincidan.Al usar regiones, puedo anidar las coincidencias tanto como lo necesito, lo que habría sido muy complicado (¿imposible?) Si hubiera elegido solo
matchcon expresiones regulares.Creo que las expresiones regulares utilizadas para hacer coincidir la llamada a la función y la palabra clave se pueden refinar, pero teniendo en cuenta lo que es válido en Python 3 , esa no es una tarea que esté dispuesto a asumir.
Opcionalmente, creo que puede usar esto para resaltar llamadas a funciones, usando un
matchgroup:fuente
pythonBuiltingrupo de sintaxis de forma predeterminadasyntax/python.vim. Sin embargo, no distingue entre las funciones y variables incorporadas (True,FalseyNonetambién están enpythonBuiltin). Probablemente podría copiar las definiciones para su uso.query(...).***filter***()filtro Me gusta se resalta mientras no tiene nada que ver con las funciones de filtro incorporado.syntax.vimconvierte en palabras clave. Ver github.com/vim/vim/blob/master/runtime/syntax/python.vim#L184syntax/python.vimarchivos adicionales (solo el predeterminado, y no veo el comportamiento que usted hace: i.stack.imgur.com/LgF6F.png , y estoy de acuerdo con la definición de la palabra clave: ese es el ajuste más cercano, y yo no piense que las palabras clave coinciden en casos comononkeyword.keyword. En cuanto a las variables, tenga en cuenta que estas incorporadas son variables, son variables que contienen objetos de función y se pueden asignar como cualquier otra variable. Nada le impide hacersorted = filtery luego usarsortedcomofilter.Aquí es donde puedes comenzar:
Descomponiendo:
Esto necesita mejoras, pero le brinda una visión general de cómo puede hacerlo.
fuente
Además de la respuesta @ Nobe4, puede hacer lo siguiente:
~/.vim/after/syntax/python.vimPonga la línea de tesis en el archivo:
Esto creará un archivo de sintaxis que agregará una coincidencia de sintaxis para sus argumentos seguido de a
=y establecerá el estilo a usar. Este tema:h mysyntaxfile-adddebería ser interesante para ti.También utilicé una expresión regular diferente a la otra respuesta, aquí está el detalle (no sé cuál funciona mejor, así que probablemente tengas que intentarlo):
fuente
Descubrí que la respuesta de @ Wolfie captura el desenvolvimiento de una tupla como palabra clave y también tuvo problemas para capturar argumentos de palabras clave con saltos de línea.
Inspirado por su expresión regular, se me ocurrió lo siguiente para poner en mi
python.vimarchivo de sintaxis. (Tenga en cuenta que originalmente estoy usando elpython.vimarchivo de sintaxis de sheerun / vim-polyglot )Y el desglose de expresiones regulares es muy similar a la respuesta de @ Wolfie :
Tenga en cuenta que esto no va a colorear un argumento de palabra clave escrita como:
key = value. Lo cual considero algo bueno, ya que va en contra de la recomendación oficial de espacios en blanco PEP-8 para argumentos de palabras clave .fuente
La respuesta aceptada al momento de escribir se rompió al resaltar las cadenas dentro de las listas de argumentos de función para mí (por qué alquimia no lo sé), así que aquí hay una versión con suerte más segura, basada en la de Statox .
ctermfges para terminal de consola,guifges para gui. Por supuesto, eres libre de cambiar los colores a lo que te parezca elegante. Aquí hay una lista útil .Como siempre, es mejor poner esto dentro
~/.vim/after/syntax/python.vimPara un desglose de expresiones regulares, aquí tienes:
La comprobación final detiene el resaltado de los condicionales para colorear. Puede eliminarlo si lo desea.
fuente