2009-08-14 23 views
8

Me gusta que vim 7.0 sea compatible con la revisión ortográfica a través de: establecer hechizo, y me gusta que por defecto solo verifique los comentarios y las cadenas de texto en mi código C. Pero quería encontrar una manera de cambiar el comportamiento para que vim supiera que cuando escribo palabras que contengan guiones bajos, no quiero que se corrobore ese hechizo de palabras.¿Cómo cambiar el reconocimiento de palabras en el hechizo vim?

El problema es que a menudo me referiré a los nombres de variables o funciones en mis comentarios, y por eso ahora vim piensa que cada texto que no es una palabra correcta completa es un error ortográfico. P.ej.

/* The variable proj_abc_ptr is used in function do_func_stuff' */

mayoría de las veces, las piezas separadas por guiones son palabras completas, pero otras veces son abreviaturas que prefiere no añadir a una lista de palabras. ¿Hay alguna forma global de decirle a vim que incluya _'s como parte de la palabra cuando se deletrea?

Respuesta

4

Tendrá que moverlo a su propio grupo. Algo como esto:

hi link cCommentUnderscore cComment 
syn match cCommentUnderscore display '\k\+_\w\+' 
syn cluster cCommentGroup add=cCommentUnderscore 

En algunos marcadores que puede necesitar [email protected] en el extremo de la línea de partido, pero en C, el valor predeterminado es @NoSpell, por lo que debería estar bien así.

+0

Eso funciona genial! Muchas gracias. Un comentario que agregaré: originalmente intenté poner esto en mi .vimrc, pero no hace nada allí. Después de mirar la: syn help, descubrí que para obtener esta sintaxis resaltando el cambio para usar cada vez que se carga la sintaxis C, necesitaba poner estas líneas en un archivo ~/.vim/after/syntax/c.vim . Después de que hice eso, todo funcionó bien. –

+2

Después de usar este cambio por un tiempo corto, hice dos refinamientos. Primero, para no deletrear palabras con '_' al principio o al final de la palabra. En segundo lugar, no hacer que cada palabra con un _ sea coloreada según los comentarios. La nueva línea es: "syn match cCommentUnderscore display '_ \ k \ + \ | \ k \ + _ \ w *' contained" –

2

Estas son algunas reglas más generales de excepción ortográfica de poner en .vim/after/syntax/{LANG}.vim archivos:

" Disable spell-checking of bizarre words: 
" - Mixed alpha/numeric 
" - Mixed case (starting upper)/All upper 
" - Mixed case (starting lower) 
" - Contains strange character 
syn match spellingException "\<\w*\d[\d\w]*\>"  transparent contained containedin=pythonComment,python.*String [email protected] 
syn match spellingException "\<\(\u\l*\)\{2,}\>" transparent contained containedin=pythonComment,python.*String [email protected] 
syn match spellingException "\<\(\l\+\u\+\)\+\l*\>" transparent contained containedin=pythonComment,python.*String [email protected] 
syn match spellingException "\S*[/\\_`]\S*"   transparent contained containedin=pythonComment,python.*String [email protected] 

Cambio pythonComment,python.*String para su idioma.

  • transparent significa que el partido hereda sus propiedades destacando desde el bloque de contención (es decir, estas reglas no cambian la forma de visualización de texto).
  • contained impide que estos partidos se extienda más allá del bloque que contiene (la última regla termina con \S* que probablemente coincida más allá del final de un bloque)
  • containedin mantiene una lista de grupos existentes de sintaxis para agregar estas nuevas reglas a.
  • [email protected] anula todos los grupos heredados, por lo que le indica al corrector ortográfico que omita el texto coincidente.
Cuestiones relacionadas