WSL2 Ubuntu20.04下Vim编辑Go文件保存自动弹出报错列表,如何定位触发配置
定位触发自动弹出location list的配置步骤
- 第一步:排查绑定在保存事件上的自动命令
打开任意Go文件后,在Vim命令行执行:
输出结果会列出所有保存Go文件时触发的自动命令,每条命令会显示所属的:autocmd BufWrite,BufWritePost *.goaugroup以及定义位置,直接就能找到对应的配置来源。 - 第二步:检查QuickFixCmdPost触发规则
自动弹出location list本质是lwindow命令被触发,执行以下命令查看对应绑定:
如果你之前配置里的:autocmd QuickFixCmdPost l*au QuickFixCmdPost l* lwindow没有被完全禁用,只要保存时执行了lmake类的语法检查命令,就会自动弹出窗口。 - 第三步:用verbose定位配置定义位置
执行以下命令分别查看Go编译器配置、编译程序设置的加载来源,输出会直接显示最后修改该配置的文件路径::verbose compiler go :verbose set makeprg? - 第四步:排查所有加载的脚本文件
在Vim中执行:
会按加载顺序列出所有Vim启动后加载的脚本,重点排查以下路径的文件::scriptnames- 系统级配置:
/usr/share/vim/vimrc、/usr/share/vim/vim81/defaults.vim - 文件类型插件:
/usr/share/vim/vim81/ftplugin/go.vim - 全局安装的插件目录下的Go相关配置
- 系统级配置:
- 第五步:检查系统预装的Vim插件
执行系统命令查看是否安装了额外的Go相关Vim插件包:
Ubuntu 20.04的官方源中默认带的dpkg -l | grep -E 'vim.*go|go.*vim'vim-gocomplete、golang-mode类包都会默认开启保存自动检查逻辑。
临时禁用验证方法
你可以在打开Go文件后临时清空对应自动命令,验证是否是该规则导致的问题:
:autocmd! BufWritePost *.go
之后再执行:w保存,如果不再弹出location list,就可以确认是保存事件绑定的自动命令导致的问题,你可以在自己的.vimrc中添加该规则覆盖系统级配置。
内容的提问来源于stack exchange,提问作者hidetatz
相关产品推荐
相关产品推荐

