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 hlsearch
habilitado) 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 0x00
y ASCII 0x7F
(0-127), y parece funcionar en mi prueba simple. Para ASCII extendido, por supuesto, extienda el rango hasta en \xFF
lugar de \x7F
usar /[^\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-match
define una cadena que coincide con caer en un grupo.highlight
define 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.termbg
no parece ser un comando legal en VIM 7.3 como está instalado en Ubuntu Server 12.10.termbg
no parece ser un parámetro legal en VIM 7.3 como está instalado en Ubuntu Server 12.10.term
no puede tener color de fondo, mientras que el terminal de colorcterm
sí.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 continue
Linux mint 17.3containedin=ALL
al 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 unaif
declaració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 hlsearch
destacará:fuente
:%s/[^[:alnum:][:punct:][:space:]]//gc
cuá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
enc
afenc
. 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 claveERROR
en su archivo de sintaxis de color. Esto es mío:hi Error guifg=Black guibg=Orange
En 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á agregarlozshComment
a 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
:sy
en 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,-_\.]//g
Mantiene 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-contains
sección lo contendría.Problema replicado de: Establezca el elemento con mayor prioridad de resaltado en vim
fuente