尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Neovim Go 注释格式化指南:gq 没反应时,如何用 gw 快速恢复

Neovim Go 注释格式化指南:gq 没反应时,如何用 gw 快速恢复 Neovim Go 注释格式化指南gq 没反应时如何用 gw 快速恢复【免费下载链接】neovimVim-fork focused on extensibility and usability项目地址: https://gitcode.com/GitHub_Trending/ne/neovim当你在 Neovim 里写 Go选中注释按 gq 却毫无反应。原因是 Go filetype 插件默认把 formatprg 指向 gofmt。本文讲清现象与分工给出处理路径注释用 gw 换行、代码交给 gofmt/LSP也可覆盖 formatprg 让 gq 恢复默认。先判断现象Neovim gq 为什么没反应典型表现在.go文件里用V选中一段多行//注释按gq文本纹丝不动切到.txt或 README 里同样的gq却正常折行。这时很容易怀疑 Neovim 的 gq 坏了。其实 gq 在正常工作。只是 Go 文件的 formatprg 指向了 gofmtgq 会把选中内容交给 gofmt 处理而 gofmt 对注释内容基本原样输出所以你看到的就是没反应。背后的分工formatprg、gofmt、gq 与 gwgq把当前段落或可视范围当作文本格式化按 textwidth 重新折行一旦 formatprg 有值内容会交给该外部程序。Go filetype 的 formatprgNeovim 的 Go filetype plugin见runtime/ftplugin/go.vim默认将 formatprg 设为 gofmt等于规定Go 文件里的 gq 走 gofmt。gofmtGo 官方代码格式化工具管的是缩进、空格和代码结构并不会像文本换行工具那样整理注释措辞。冲突点在于一个 formatprg 同时承担了代码格式化和注释换行两种期望而 gofmt 只做前者。推荐处理方式Go 文件注释如何换行交给 Neovim gwgw 是 Neovim 自带的文本格式化命令与 gq 的关键区别是它不走 formatprg 流程直接按 textwidth 对范围做文本折行。想整理 Go 文件里的注释选中范围执行 gw 即可效果立竿见影也和 gofmt 的职责互不干扰。注释整理优先用 gw这是更稳妥的默认选择。代码格式化交给 gofmt、goimports、LSP/null-ls代码的格式统一交给工具手动在保存前跑 gofmt 或 goimports或配置 LSPgopls、null-ls 在保存时自动格式化。规则只有一份手动折行和自动格式化各管各的就不会互相打架。用 gq 去碰代码反而可能做出 gofmt 下次就改掉的格式。想保留 gq覆盖 formatprg 的兼容设置如果你习惯 gq可以覆盖 Go ftplugin 的默认设置新建after/ftplugin/go.vim加一行——set formatprgafter/ftplugin 目录在内置 filetype plugin 之后加载这个空值会清掉 gofmt 配置gq 恢复为普通文本格式化。代价也要清楚Go 文件里 gq 从此不再调用 gofmt代码格式化得继续靠外部工具这是体验与习惯之间的取舍。快速自查要折行的是注释、gq 没变化先改用 gw。查看:set formatprg?值是 gofmt 就说明 gq 走的是 gofmt。代码格式化是否已由 LSP 或 null-ls 接管避免手动 gq/gw 与保存时格式化互相覆盖。【免费下载链接】neovimVim-fork focused on extensibility and usability项目地址: https://gitcode.com/GitHub_Trending/ne/neovim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表