After that it was a matter of just going through the usual steps of working out why something isn't working. I think in this instance I actually ended up manually retyping the code, and when getting "identical" code that worked that was when the penny dropped and I realised something was not what it seemed. If you paste suspect characters into something like http://unicode-table.com/en/ it will tell you right away what it really is.
But yeah getting to that point relies on pure inspiration, in my case.
After fighting against word processor quotes, it's become second nature to double check it periodically.
:set statusline=%F%m%r%h%w\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
:set laststatus=2
Produces a status line when inserting and recording a macro like (the character under the cursor is 'm': ~/.vimrc [TYPE=VIM] [ASCII=109] [HEX=6D] [POS=0123,0020][67%] [LEN=182]
-- INSERT --recording
And, of course... `:help statusline` [ASCII=2>4] [HEX=0>4]
It's not ASCII, and its hex code is 6BCF.It also says "ASCII=252" when I put the cursor over "ü". Claiming that values over 127 are ASCII is just a malapropism.
For us emacsen you can do a (what-cursor-position &optional DETAIL) which is usually bound to Ctl-x =
I don't think it will be nearly this clean to add it to the modeline, but I'll take a look.
:syn match Error "[^ -~]"It protects you from these tricks by highlighting "troll" unicode characters in red.