Skip to content

Instantly share code, notes, and snippets.

@Konfekt
Last active June 27, 2019 09:54
Show Gist options
  • Save Konfekt/3de6c6f2903c8ab40157911283d8b2c7 to your computer and use it in GitHub Desktop.
Save Konfekt/3de6c6f2903c8ab40157911283d8b2c7 to your computer and use it in GitHub Desktop.
highlight common unicode homoglyphs as error in Vim
" TODO Update to list at https://www.irongeek.com/homoglyph-attack-generator.php
augroup vimrc
autocmd!
autocmd ColorScheme *
\ highlight homoglyphfg cterm=underline ctermfg=DarkGreen ctermbg=NONE gui=undercurl guifg=DarkGreen guibg=NONE |
\ highlight homoglyphbg ctermfg=NONE ctermbg=DarkGreen guifg=NONE guibg=DarkGreen
augroup END
silent doautocmd vimrc ColorScheme
" Highlight non-breaking white space characters
1match homoglyphbg '[\x0b\x0c\u00a0\u1680\u180e\u2000-\u200a\u2028\u202f\u205f\u3000\u3164\ufeff]'
" Highlight unicode homoglyphs listed at
" https://fastapi.metacpan.org/source/BIGPRESH/Unicode-Homoglyph-Replace-0.01/lib/Unicode/Homoglyph/Replace.pm
2match homoglyphfg '[
\\u01C3\u2D51\uFE15\uFE57\uFF01
\\u2033\u05f4\uFF02
\\uFE5F\uFF03
\\uFE69\uFF04
\\u066A\u2052\uFE6A\uFF05
\\uFE60\uFF06
\\u02B9\u0374\uFF07
\\uFE59\uFF08
\\uFF09\uFE5A
\\u204E\u22C6\uFE61\uFF0A
\\u16ED\uFE62\uFF0B
\\u02CF\u16E7\u201A\uFF0C
\\u02D7\u2212\u23BC\u2574\uFE63\uFF0D
\\u2024\uFF0E
\\uFF0F\u1735\u2044\u2215\u29F8
\\u14BF
\\u01B7\u2128
\\u13CE
\\u13EE
\\u13ED
\\u02D0\u02F8\u0589\u1361\u16EC\u205A\u2236\u2806\uFE13\uFE55\uFF1A
\\u037E\uFE14\uFE54\uFF1B
\\u02C2\u2039\u227A\u276E\u2D66\uFE64\uFF1C
\\u2550\u268C\uFE66\uFF1D
\\u02C3\u203A\u227B\u276F\uFE65\uFF1E
\\uFE16\uFE56\uFF1F
\\uFE6B\uFF20
\\u0391\u0410\u13AA
\\u0392\u0412\u13F4\u15F7\u2C82
\\u03F9\u0421\u13DF\u216D\u2CA4
\\u13A0\u15EA\u216E
\\u0395\u0415\u13AC
\\u15B4
\\u050C\u13C0
\\u0397\u041D\u12D8\u13BB\u157C\u2C8E
\\u0399\u0406\u2160
\\u0408\u13AB\u148D
\\u039A\u13E6\u16D5\u212A\u2C94
\\u13DE\u14AA\u216C
\\u039C\u03FA\u041C\u13B7\u216F
\\u039D\u2C9A
\\u039F\u041E\u2C9E
\\u03A1\u0420\u13E2\u2CA2
\\u051A\u2D55
\\u13A1\u13D2\u1587
\\u0405\u13DA
\\u03A4\u0422\u13A2
\\u13D9\u2164
\\u13B3\u13D4
\\u03A7\u0425\u2169\u2CAC
\\u03A5\u2CA8
\\u0396\u13C3
\\uFF3B
\\u2216\u29F5\u29F9\uFE68\uFF3C
\\uFF3D
\\u02C4\u02C6\u1DBA\u2303\uFF3E
\\u02CD\u268A\uFF3F
\\u02CB\u1FEF\u2035\uFF40
\\u042c
\\u0251\u0430
\\u03F2\u0441\u217D
\\u0501\u217E
\\u0435\u1971
\\u0261
\\u04BB
\\u0456\u2170
\\u03F3\u0458
\\u217C
\\u217F
\\u1952
\\u03BF\u043E\u0D20\u2C9F
\\u0440\u2CA3
\\u0455
\\u1959\u222A
\\u1D20\u2174\u2228\u22C1
\\u1D21
\\u0445\u2179\u2CAD
\\u0443\u1EFF
\\u1D22
\\uFE5B\uFF5B
\\u01C0\u16C1\u239C\u239F\u23A2\u23A5\u23AA\u23AE\uFF5C\uFFE8
\\uFE5C\uFF5D
\\u02DC\u2053\u223C\uFF5E
\\u04d2
\\u04e6
\]'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment