咨询:Vim中所有文件开头出现($p)奇怪字符的原因及解决方法
这种情况我之前也碰到过几次,大概率是Vim的插件冲突或者自定义配置搞出来的小毛病——毕竟Vim的灵活性拉满,有时候不经意的配置或者插件的小bug就会出现这类奇怪的显示问题。给你几个排查和解决的思路:
先排除插件/配置干扰
直接用纯净模式启动Vim:vim -u NONE,然后打开文件或者新建空文件看看还会不会出现($p)。如果这个时候消失了,那肯定是你的vimrc配置或者某个插件导致的。逐步定位问题来源
如果纯净模式没问题,那就逐步排查:- 先单独加载你的
vimrc:vim -u ~/.vimrc,然后逐个禁用插件(比如用你用的插件管理器命令,Vundle是:PluginDisable [插件名],Packer是:PackerLoad!反向操作),每禁用一个就新建文件看看,直到找到触发问题的插件。 - 如果不是插件的锅,就把
vimrc里的内容逐段注释掉,每次重启Vim测试,找到对应的配置行。
- 先单独加载你的
检查自动命令(autocmd)
有些自动命令会在文件打开时执行操作,哪怕是误写的命令也可能导致这种虚假显示。你可以在Vim里输入:autocmd查看所有生效的自动命令,重点关注针对BufEnter、BufNewFile、BufRead这些文件打开相关事件的命令,看看有没有奇怪的输出或者插入操作。排查虚拟文本(Virtual Text)
Vim 8.1+支持虚拟文本功能,有些插件会用它在文件里显示提示信息。虽然虚拟文本一般不会被输入覆盖,但也不排除特殊情况。你可以试试输入:set virtualtext=,然后看看($p)会不会消失,如果消失了,那就是某个插件用虚拟文本搞的鬼,找到对应的插件调整配置就行。终端环境排查(可能性较低)
偶尔终端的特殊转义字符残留也可能导致这类显示问题,你可以换个终端(比如从Terminal换成iTerm2,或者Windows下的PowerShell换成Cmd)启动Vim试试,排除终端的问题。
一般按照这个流程走,很快就能找到问题根源,解决起来也简单——要么禁用有问题的插件,要么修改对应的配置行就行。
内容的提问来源于stack exchange,提问作者GlyphGryph

