How to get Vim to highlight non-ascii characters?
This regex works to highlight as well. It was the first google hit for "vim remove non-ascii characters" from briceolion.com and with :set hlsearch
will highlight:
/[^[:alnum:][:punct:][:space:]]/
Using range in a []
character class in your search, you ought to be able to exclude the ASCII hexadecimal character range, therefore highlighting (assuming you have hlsearch
enabled) all other characters lying outside the ASCII range:
/[^\x00-\x7F]
This will do a negative match (via [^]
) for characters between ASCII 0x00
and ASCII 0x7F
(0-127), and appears to work in my simple test. For extended ASCII, of course, extend the range up to \xFF
instead of \x7F
using /[^\x00-\xFF]
.
You may also express it in decimal via \d
:
/[^\d0-\d127]
If you need something more specific, like exclusion of non-printable characters, you will need to add those ranges into the character class []
.
For other (from now on less unlucky) folks ending up here via a search engine and can't accomplish highlighting of non-ASCII characters, try this (put this into your .vimrc):
highlight nonascii guibg=Red ctermbg=1 term=standout
au BufReadPost * syntax match nonascii "[^\u0000-\u007F]"
This has the added benefit of not colliding with regular (filetype [file extension] based) syntax definitions.
Yes, there is a native feature to do highlighting for any matched strings. Inside Vim, do:
:help highlight
:help syn-match
syn-match
defines a string that matches fall into a group.
highlight
defines the color used by the group.
Just think about syntax highlighting for your vimrc files.
So you can use below commands in your .vimrc file:
syntax match nonascii "[^\x00-\x7F]"
highlight nonascii guibg=Red ctermbg=2