Neovim 里 Go 注释 gq 失效?两行配置让格式化恢复
Neovim 里 Go 注释 gq 失效两行配置让格式化恢复【免费下载链接】neovimVim-fork focused on extensibility and usability项目地址: https://gitcode.com/GitHub_Trending/ne/neovim在 Neovim 里编辑 Go 文件选中一段注释按 gq 想重排文字光标一闪注释原样不动。Vim 里明明好用的习惯到了 Neovim 上 Go 注释就成了死区。① 直接清空 formatprg最省事的办法把 Go 文件类型插件里的 formatprg外部格式化程序选项gq 执行时调用它清空gq 就回到编辑器内置的文本格式化逻辑。在 init.lua 或 init.vim 里加一行vim.cmd(autocmd FileType go setlocal formatprg)执行后你再选中注释按 gq文字会按 textwidth 自动换行、重排命令不再是空转。② 为什么会这样Go 文件插件历史上把 formatprg 指向 gofmt但 gofmt 只管代码结构、不碰注释里的文字。因为 gq 优先交给这个外部程序处理所以注释段传过去被原样吐回按了等于没按。再加上 Go 插件默认setlocal formatoptions-t把 t自动按行宽换行从格式化行为里摘掉了所以 gq 干脆无米下锅。其实就一句话程序没换是活儿被派给了不会干的人。③ 换用 gw 加 after 覆盖如果你不想动全局配置分三步走在 Go 注释里改用 gw把选区当段落重新排版的命令和 gq 的区别是它强制按 textwidth 换行gw选中文本后按 gw注释立即按 79 列宽重排。 2. 在配置目录建 after/ftplugin/go.vim 文件这是专门覆盖文件类型插件的钩子目录。 3. 文件里写一行清空指令set formatprg保存后 gq 恢复默认行为已有缓冲区需:edit重载一次。④ 容易踩的坑⚠️ 全局清空 formatprg 会连累其他文件类型上面 autocmd 写法只作用于 Go别图省事直接set global formatprg。⚠️ after/ftplugin 只在打开新文件时生效改完不重载缓冲区你会误以为没配成功。⚠️ 清空 formatprg 不等于获得保存时自动格式化那是 null-ls 或 LSP 的活两件事别混。⑤ 延伸一下想搞清楚 t 这类开关各自管什么直接查:help formatoptions:help gw里也写明了 gw 和 gq 的行为差异。想要保存即 gofmt 的体验看 LSP 配置文档 配合vim.lsp.config的 on_save 钩子比 formatprg 更靠谱。先跑一遍 ① 里的 autocmd今天 gq 就能干活了。【免费下载链接】neovimVim-fork focused on extensibility and usability项目地址: https://gitcode.com/GitHub_Trending/ne/neovim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考