如何在(neo)vim中显示或高亮零宽不可见字符
可直接落地的配置方案
针对你用的Neovim 0.5.1 + iTerm2 + MacOS环境,按下面操作即可实现所有零宽字符可见:
1. 基础配置(覆盖绝大多数场景)
直接在你的init.vim配置文件中加入如下代码:
" 开启不可见字符显示开关 set list " 自定义不可见字符显示样式,零宽空格等特殊字符默认显示为☒,你也可以换成?等你想要的符号 set listchars+=nbsp:☒,trail:·,tab:>-,precedes:«,extends:» " 专门匹配你提到的\u3164(朝鲜语填充零宽字符),用红色高亮显示 match SpecialKey /\%u3164/ hi SpecialKey ctermfg=red guifg=red
配置完成后重启Neovim即可生效,如果不想默认开启,也可以在需要的时候手动在Normal模式输入:set list临时开启,输入:set nolist关闭。
2. 全零宽字符覆盖配置
如果需要覆盖所有常见的零宽字符(零宽空格、零宽连字符、BOM标记等),可以再加这段自动规则:
augroup ShowAllZeroWidthChars autocmd! " 匹配所有Unicode分类中的零宽字符,统一高亮显示 autocmd BufEnter * match Error /[\u200b-\u200f\u202a-\u202e\u2060-\u2064\ufeff\u3164]/ augroup END " 自定义零宽字符的高亮样式,这里用红底白字方便识别,你可以自行修改颜色 hi Error ctermbg=red guibg=red ctermfg=white guifg=white
3. iTerm2适配检查
如果配置完成后还是没有生效,检查iTerm2设置:
- 打开iTerm2偏好设置 → Profiles → Text 标签页
- 确认勾选「Use Unicode version 9+ widths」,避免Unicode宽度判断错误导致字符不显示
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

