En vim, FIXME y TODO están resaltados, pero no puedo obtener FIXME: y TODO: (tenga en cuenta los dos puntos después de la palabra clave) para resaltar? ¿Qué debo poner en mi .vimrc para que esto suceda?En vim, ¿cómo puedo resaltar TODO: y FIXME :?
Respuesta
Bueno, ya has encontrado el problema, pero este es el por qué.
Hay tres tipos básicos de concordancia de sintaxis: palabras clave, coincidencias y regiones. Las palabras clave son cadenas fijas, generalmente usadas para palabras clave de lenguaje básico (int
, double
, ...) y también, en su caso, para FIXME y TODO. Realmente quiero decir cadenas fijas; tienen que ser palabras exactas y completas, a diferencia de las coincidencias y las regiones, que usan expresiones regulares. Por ejemplo, la sintaxis de C:
syn keyword cTodo contained TODO FIXME XXX
Parece que en casi todos los incorporados en las definiciones de sintaxis, sólo que con diferentes nombres de grupo (cTodo).
iskeyword
le dice a vim si un personaje dado puede formar parte de la palabra clave. De forma predeterminada, no incluye dos puntos, por lo que cuando busca palabras clave, vim ve "FIXME:" como "FIXME" e ignora los dos puntos. Si virar en el colon (set iskeyword+=:
), ahora se puede definir un poco más de relieve:
syn keyword myTodo contained TODO: FIXME:
Todo depende de cómo se quiere trabajar en los grupos de sintaxis/resaltar existentes. Si es solo para un tipo de archivo, puede agregarlo al grupo de tareas de la sintaxis (por ejemplo, cTodo). Si lo desea en todas partes, puede hacer "myTodo" como sugerí, y luego vincularlo directamente al grupo de resaltado Todo (hi def link myTodo Todo
).
Alternativamente, puede dejar solos iskeyword
(probablemente lo recomendaría esto), y sólo tiene que utilizar un fósforo:
syn match myTodo contained "\<\(TODO\|FIXME\):"
hi def link myTodo Todo
+1 @Jefromi, sin embargo, no creo que este syn match funcione. Lo puse en mi .vimrc y si cambio FIXME a otra cosa, no está resaltado. – g33kz0r
@ G33kx0r: No es culpa de este partido; funciona si todavía existe. Sospecho que está habilitando la sintaxis (de una manera u otra) * después de * las líneas en su ejecución vimrc, y cuando la sintaxis está habilitada, primero borra la sintaxis antigua y luego carga la apropiada. Puede verificar si esa coincidencia aún está en su sitio usando ': syn list myTodo'. Ver también ': help syntax-loading'. – Cascabel
Estableciendo la primera 'sintaxis en' y luego' syn coincide con myTodo contenía "\ <\ (TODO \ | FIXME \):" 'en mi archivo' vimrc' y 'hola! def link myTodo Todo' no funciona para mí. Por otro lado, si lo hago, por ejemplo, 'au BufNewFile, BufRead * .tex syn match texTodo" \ <\ (TODO \ | FIXME \): "' el archivo 'tex' resultante se resalta correctamente. ¿Hay una solución general? – petobens
Si usted hace su propio entorno, make syntax file (not .vimrc)
sintaxis mundial el archivo se encuentra en el directorio vim (por ejemplo, /usr/share/vim/vim72/syntax/c.vim)
y si Haga ~/.vim/syntax/c.vim, luego puede agregar la sintaxis para su propio . (Anulación)
Apenas añada la sintaxis adicional en ese archivo. (La forma en que lo hace @ Jefromi)
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
El containedin
lo añadiremos a todos los grupos que terminan en "Comentario", además de vimCommentTitle, donde " TODO: foo
no conseguiría destacado como myToDo lo contrario.
Notas de uso: puede agregar esto a su .vimrc, y eliminar los dos puntos (':') si solo desea resaltar la palabra, y no los dos puntos que la siguen. Prefiero el resaltado para leer _NOTE_ :, no _NOTA: _. También a veces escribo NOTE o TODO no seguido por dos puntos. – Ari
- 1. Xcode usando FIXME, TODO, ???,?
- 2. Complemento TODO/FIXME para Eclipse
- 3. ¿Puede Doxygen configurarse fácilmente para reconocer líneas TODO y FIXME?
- 4. ¿Cómo resaltar los scripts Bash en Vim?
- 5. Resaltar TODO en todos los modos de programación
- 6. vim sintaxis resaltar mejorar el rendimiento
- 7. resaltar todo el texto en textarea
- 8. Posible resaltar las comillas coincidentes en vim?
- 9. Resalte // TODO en XCode
- 10. ¿Cómo puedo resaltar el texto en Scintilla?
- 11. ¿Cómo puedo resaltar una palabra en gridview
- 12. ¿Cómo puedo resaltar múltiples variables en Eclipse?
- 13. Vim resaltar una lista de palabras
- 14. Resaltar coincidencias en Vim sobre un patrón invertido
- 15. Cómo forzar vim a sintaxis-resaltar un archivo como html?
- 16. Coloreado de sintaxis Vim: ¿Cómo puedo resaltar solo las líneas largas?
- 17. ¿Cómo puedo resaltar un botón con jQuery?
- 18. ¿Hay alguna manera de resaltar búsquedas múltiples en (g) Vim?
- 19. Pliegues VIM para todo menos algo
- 20. Vim: Resalte la palabra TODO para cada tipo de archivo
- 21. ¿Cómo se busca todo el código fuente en Vim?
- 22. En Vim, ¿cómo elimino todo dentro de las comillas dobles?
- 23. Jeditable - resaltar todo el texto después de hacer doble clic
- 24. ¿Cómo puedo anular las rutas ~/.vim y ~/.vimrc (pero no otras) en vim?
- 25. Vim reemplazar todo sin mover el cursor
- 26. Administrar #TODO (muchos archivos) con VIM
- 27. ¿Existe un complemento de Vim para resaltar Hex, Rgb, Colors
- 28. ¿Cómo puedo resaltar/delinear un objeto Visual en WPF?
- 29. ¿Cómo puedo marcar/resaltar líneas duplicadas en el editor VI?
- 30. Cómo resaltar ListView-Items
Eso es extraño; la mía destacada con o sin los dos puntos. Ese resaltado de sintaxis se define en sintaxis individuales, creo, ¿esto está sucediendo en algún tipo de archivo específico? – Cascabel
@Jefromi: creo que sucede en todos los tipos de archivos. –
¿Qué dice ': verbose set iskeyword?' Tell? – Benoit