En vim, ¿cómo puedo resaltar TODO: y FIXME:?

En vim, FIXME y TODO se destacan, pero no puedo conseguir FIXME: y TODO: (nota: los dos puntos después de la palabra clave) para resaltar? ¿Qué debo poner en mi .vimrc para hacer que esto suceda?

  • Que curioso; mina de resaltar con o sin el colon. Que el resaltado de sintaxis se define en el individuo sintaxis, creo yo – es que esto suceda en algún tipo de archivo específico?
  • Yo creo que ocurre en cada tipo de archivo.
  • ¿qué :verbose set iskeyword? decir?
  • Brillante. Yo era capaz de seguirle la pista a algunos de látex de configuración de la que se dijo: set iskeyword+=:. No estoy seguro de lo que significa, aunque (y el sistema de ayuda no mucho uso). Así que ahora TODO: destaca el TODO a la parte, pero no el de colon. No estoy seguro de lo que quiero, pero no me importaría probar el último. Es posible resaltar el colon también?
  • Sí. Tienes que hacer algo de :syntax match cTodo /\<TODO:/
InformationsquelleAutor Paul Biggar | 2010-11-04

3 Kommentare

  1. 54

    Bueno, ya he encontrado el problema, pero aquí está el por qué.

    Hay tres tipos básicos de sintaxis de coincidencia: palabras clave, partidos y regiones. Las palabras claves son cadenas fijas, utilizado generalmente para el lenguaje básico de las palabras clave (int, double, …) y también, en su caso, para la FIXME y TODO. Realmente no me refiero a cadenas fijas; tienen que ser exactas y de la totalidad de las palabras, a diferencia de los partidos y las regiones, que el uso de expresiones regulares. Por ejemplo, a partir de la sintaxis C:

    syn keyword   cTodo   contained    TODO FIXME XXX
    

    Parece que en casi todos los integrados en las definiciones de sintaxis, sólo que con diferentes nombres de grupo (cTodo).

    iskeyword dice vim si un determinado carácter puede ser parte de la palabra clave. Por defecto, no son dos puntos, así que cuando se busca palabras clave, vim ve «FIXME:» como «FIXME», y omite el colon. Si usted tachuela en el colon (set iskeyword+=:), ahora puedes definir un poco más de resaltado:

    syn keyword   myTodo   contained   TODO: FIXME:
    

    Es hasta usted cómo usted desea trabajar en la existente sintaxis resaltar o grupos. Si es solo para un tipo de archivo, se podría agregar a la sintaxis del todo el grupo (por ejemplo, cTodo). Si desea que en todas partes, que se puede hacer «myTodo» como ya he sugerido, a continuación, vincular directamente a las Tareas destacando grupo (hi def link myTodo Todo).

    Alternativamente, usted puede dejar iskeyword solo (probablemente me lo recomendamos), y simplemente utilizar una coincidencia:

    syn match   myTodo   contained   "\<\(TODO\|FIXME\):"
    hi def link myTodo Todo
    
    • +1 @Jefromi, sin embargo, no creo que este syn partido de las obras. Me dio una palmada en mi .vimrc y si puedo cambiar FIXME a algo que no se destaca.
    • Que no es culpa de este partido; funciona si es que todavía existe. Sospecho que usted está habilitando sintaxis (de una manera o de otra) después las líneas de su vimrc ejecutar, y cuando la sintaxis está activado, primero borra la sintaxis antigua, a continuación, carga el apropiado. Usted puede comprobar para ver si el partido está todavía en su lugar con :syn list myTodo. Véase también :help syntax-loading.
    • Configuración de la primera syntax on y después syn match myTodo contained "\<\(TODO\|FIXME\):"en mi vimrc archivo y hi! def link myTodo Todo no funciona para mí. Por otro lado, si yo, por ejemplo, au BufNewFile,BufRead *.tex syn match texTodo "\<\(TODO\|FIXME\):" el resultado tex fichero está debidamente destacado. Hay una solución general?
  2. 14
    augroup vimrc_todo
        au!
        au Syntax * syn match MyTodo /\v<(FIXME|NOTE|TODO|OPTIMIZE|XXX):/
              \ containedin=.*Comment,vimCommentTitle
    augroup END
    hi def link MyTodo Todo
    

    La containedin va a añadir a todos los grupos que terminan en «Comentario», además de
    vimCommentTitle, donde " TODO: foo que no iba a llegar destacó como MyTodo lo contrario.

    • Notas de uso: puede agregar esto a su .vimrc, y quitar los dos puntos (‘:’) si lo que desea es la palabra resaltada, y no el de colon siguiente. Yo prefiero el resaltado leer NOTA:, no NOTA: . Yo también a veces de escribir la NOTA o TAREAS no seguida de dos puntos.
    • He añadido una línea adicional: hi def link MyTodo pythonTodo. Obras.
    • Si usted está creando una nueva autocommand grupo «vimrc_todo» es el au! (claro otros autocommands) necesario? Realmente preguntando, porque no estoy seguro de que, no siendo sarcástico.
    • Yo podría haber ido un poco loco, pero me fui con este: au Sintaxis * syn partido moreTodo /\v\c<(fix|change|tweak|note|todo|optimize|problem|issue|warning|bug|source|author|name|date|time|task|update)(‘|s|es|ed|d)*:/ containedin=.*Comentario,vimCommentTitle
  3. 2

    Si usted hace su propio entorno, make syntax file (not .vimrc)

    • global de la sintaxis se encuentra el archivo de vim directorio (ex.
      /usr/share/vim/vim72/sintaxis/c.vim)

    • y si usted hace el ~/.vim/sintaxis/c.vim, entonces usted puede agregar la sintaxis para su
      propio. (override)

    Acaba de agregar adicional de sintaxis en el archivo. (de la forma que @Jefromi hace)

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea