Estoy tratando de hacer que Vim resalte caracteres no ASCII. ¿Hay una configuración disponible, un patrón de búsqueda de expresiones regulares o un complemento para hacerlo?
153
Al usar el rango en una []clase de caracteres en su búsqueda, debería poder excluir el rango de caracteres hexadecimales ASCII, por lo tanto, resaltar (suponiendo que haya hlsearchhabilitado) todos los demás caracteres que se encuentran fuera del rango ASCII:
/[^\x00-\x7F]
Esto hará una coincidencia negativa (vía [^]) para los caracteres entre ASCII 0x00y ASCII 0x7F(0-127), y parece funcionar en mi prueba simple. Para ASCII extendido, por supuesto, extienda el rango hasta en \xFFlugar de \x7Fusar /[^\x00-\xFF].
También puede expresarlo en decimal a través de \d:
/[^\d0-\d127]
Si necesita algo más específico, como la exclusión de caracteres no imprimibles, deberá agregar esos rangos a la clase de caracteres [].
/[^\d0-\d127]Sí, hay una función nativa para resaltar las cadenas coincidentes. Dentro de Vim, haz:
syn-matchdefine una cadena que coincide con caer en un grupo.highlightdefine el color utilizado por el grupo. Solo piense en el resaltado de sintaxis para sus archivos vimrc.Entonces puede usar los siguientes comandos en su archivo .vimrc:
fuente
:comandos delante de tu vimrc.termbgno parece ser un comando legal en VIM 7.3 como está instalado en Ubuntu Server 12.10.termbgno parece ser un parámetro legal en VIM 7.3 como está instalado en Ubuntu Server 12.10.termno puede tener color de fondo, mientras que el terminal de colorctermsí.Para otras personas (de ahora en adelante menos desafortunadas) que terminan aquí a través de un motor de búsqueda y no pueden lograr el resaltado de caracteres no ASCII, intente esto (ponga esto en su .vimrc):
Esto tiene el beneficio adicional de no colisionar con definiciones de sintaxis regulares (basadas en tipo de archivo [extensión de archivo]).
fuente
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continueLinux mint 17.3containedin=ALLal final de la última línea, haciéndoloau BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL. Encuentro la distracción pena (Unicode cuando se permite), la respuesta original aquí no no coger cosas como el código no ASCII en el interior de unaifdeclaración ...autocmd BufRead ....incluirlo en un grupo automático en vim, a menos que tenga una muy buena razón para no ...Esta expresión regular también funciona. Fue el primer hit de Google para "vim remove caracteres no ascii" de briceolion.com y con
:set hlsearchdestacará:fuente
:%s/[^[:alnum:][:punct:][:space:]]//gccuál resalta primero, luego reemplaza.Si está interesado también en los caracteres no imprimibles , use este:
/[^\x00-\xff]/Lo uso en una función:
fuente
encafenc. Cambié la codificación porque mi codificación predeterminada es (era en 2013) latin1. La función no resalta los caracteres no imprimibles si el conjunto de caracteres es latin1. Para ver el resaltado, debe tener la claveERRORen su archivo de sintaxis de color. Esto es mío:hi Error guifg=Black guibg=OrangeEn base a las otras respuestas sobre este tema y la respuesta que obtuve aquí , la agregué a mi
.vimrc, para poder controlar el resaltado no ASCII escribiendo<C-w>1. También muestra comentarios internos, aunque necesitará agregar el grupo de comentarios para cada sintaxis de archivo que usará. Es decir, si va a editar un archivo zsh, deberá agregarlozshCommenta la líneade lo contrario, no mostrará el carácter no ascii (también puede establecer contenido en = TODOS si desea asegurarse de mostrar caracteres no ascii en todos los grupos). Para verificar cómo se llama al comentario en un tipo de archivo diferente, abra un archivo del tipo deseado e ingrese
:syen vim, luego busque el comentario en los elementos de sintaxis.fuente
De alguna manera, ninguna de las respuestas anteriores funcionó para mí.
Entonces solía
:1,$ s/[^0-9a-zA-Z,-_\.]//gMantiene la mayoría de los personajes que me interesan.
fuente
Alguien ya ha respondido la pregunta. Sin embargo, para otros que todavía tienen problemas, aquí hay otra solución para resaltar caracteres no ascii en los comentarios (o cualquier grupo de sintaxis en la materia). No es el mejor, pero es una solución temporal.
Uno puede intentar:
Esto tiene partes de mezcla de otras soluciones. Puede eliminar
contained, pero, de la documentación, puede haber un problema potencial de recurrirse (según tengo entendido). Para ver otros patrones definidos, lasyn-containssección lo contendría.Problema replicado de: Establezca el elemento con mayor prioridad de resaltado en vim
fuente