2010-10-20 9 views
5

que tienen una sintaxis del archivo que destaca para el q/kdb + lengua y me gustaría convertirlo en un archivo compatible vim y para Mi código q no se verá más feo que de costumbre.Convertir Notepad ++ sintaxis del archivo de vim destacando (o ¿alguien tiene aq/kdb + archivo de resaltado de sintaxis de vim?)

¿Hay utilidades disponibles para convertir automáticamente Notepad ++ sintaxis XML destacando archivos a vi versiones? Eché un vistazo pero no pude encontrar nada.

Como alternativa, ¿alguien tiene un archivo de sintaxis q destacando vim?

Respuesta

4

La respuesta a ambas preguntas es no (no conozco ningún convertidor y no tengo un archivo de resaltado de sintaxis q), pero el formato XML que resalta la sintaxis de Notepad ++ parece extremadamente simple. No tengo la 'Q' a mano, pero eché un vistazo a una de las del website y la traducción parece bastante trivial. En ese caso, se podría hacer la mayor parte del trabajo con:

" Remove all the lines that aren't lists of keywords 
" (there doesn't seem to be anything much more complicated 
" than that in the definition file) 
:g!/<Keywords name=/d 
" Convert the lines (fairly poor XML parsing here!) 
:%s/\s*<Keywords name="\([^"]\+\)">\([[:alpha:]_ ]\{-}\)<\/Keywords>/syn keyword \1 \2/ 

Esto genera una gran cantidad de líneas que se parecen:

syn keyword Words1 case then do while 

Vas a tener que modificar la clase de sintaxis (en este caso Words1) para ser algo que se resaltará en Vim (o syn-link a algo que se resaltará en Vim).

Probablemente se podría entonces tratar con los símbolos con una expresión regular, pero podría ser más fácil simplemente a hacer a mano, así convertir:

<Keywords name="Operators">- ! &quot; # $ &amp; * , . ; ? @ \^{ | } ~ + &lt; = &gt;</Keywords> 

en:

syn match Operators /\<[-!"#$&*,.;[email protected]\\^{|}~+<=>]/ 

(esto es \< para marcar un límite de palabras, seguido de una clase de caracteres [..] con todos los símbolos en él).

A continuación, sólo tiene que añadir:

if exists("b:current_syntax") 
    finish 
endif 

al comienzo y:

let b:current_syntax = "q" 

al final.

Por supuesto, esto no significa que presentamos lo mejor de todo el camino, pero es de esperar que le dará mucho de lo que necesita para obtener el archivo de sintaxis que desea. Hay mucha ayuda disponible en:

:help syntax 

y mirando a los ejemplos en el directorio de la sintaxis de la carpeta de tiempo de ejecución.

¡Buena suerte!

+0

Gracias por los consejos! Eso debería facilitar el proceso de hacer un archivo vim, no parece muy complicado ... Simplemente soy flojo. –

Cuestiones relacionadas