I've got my Emacs set up to display in "bold, fluo foregound and a dark background underlined by a pink line" (yes, literally that obnoxious) any character which is not part of a list of characters I consider to be acceptable. And it's configured to show any "zero width" character as if it had a width. So any "invisible character" as well as any "invisible zero width character" does appear as a black square, underlined with a pink line.
And that for any buffer/file.
I configured all that literally years ago so I don't remember where's what but here's what I've got:
;; probably cargo-culted from somewhere
(update-glyphless-char-display 'glyphless-char-display-control '((format-control . empty-box) (no-font . empty-box)))
;; See https://emacs.stackexchange.com/questions/65108
(set-face-background 'glyphless-char "purple")
And then I've got this too (requires markchars.el): (markchars-global-mode)
With: (defface markchars-heavy
'((t :underline "magenta"))
"Heavy face for `markchars-mode' char marking."
:group 'markchars)
It should get you started.(and, yup, I know it's overkill but I like it that way)
https://gitlab.com/nervuri/nervuri.net/-/raw/master/gopher/z...
Looks like the only one Vim misses is U+17B5? Though it there could be more not listed there. Unicode is a deep dark forest.
----
For others readers, here's a non-gopher version of the article linked inside: https://nervuri.net/stega
> Unicode is a deep dark forest.
Oh, indeed.