
vim-go 在保存 go 文件时默认会将 `gofmt` 或 `goimports` 的错误/输出通过 `less` 分页显示,造成阻塞;可通过禁用自动格式化和静默失败来彻底避免该行为。
vim-go 插件默认启用了自动格式化(g:go_fmt_autosave = 1)和失败时的详细输出(g:go_fmt_fail_silently = 0),当代码格式不合规或格式化工具报错时,插件会将标准输出/错误重定向至 less,导致保存后卡在分页器界面——这正是你每次按 :w 后被迫按 q 退出 less 的根本原因。
解决方法非常简洁,只需在你的 ~/.vimrc(或 ~/.config/nvim/init.vim)中添加以下两行配置:
let g:go_fmt_fail_silently = 1 let g:go_fmt_autosave = 0
- g:go_fmt_fail_silently = 1:使格式化失败时不弹出 less,仅在 Vim 命令行显示简短提示(如 gofmt: exit status 2),不中断工作流;
- g:go_fmt_autosave = 0:彻底禁用保存时自动格式化,改由手动触发(如 :GoFmt 或映射快捷键),从而规避所有相关输出管道。
✅ 推荐组合使用:二者协同可完全消除 less 干扰,同时保留手动格式化能力与错误可见性。若你仍希望保留自动格式化但仅屏蔽 less,可单独启用 g:go_fmt_fail_silently = 1;但需注意,某些旧版 vim-go(
⚠️ 注意:禁用 g:go_fmt_autosave 后,请务必养成手动格式化习惯(例如添加快捷键 nnoremap










