使用 ALE 替换 vim-go 插件

更新日期: 2022-09-21 阅读次数: 2320 字数: 316 分类: Vim

我目前 NeoVim 里安装了两个 go 相关的插件:

今天在保存代码修改时,一如既往的卡顿了10几秒,这种情况在1分钟之后就会消失。

可是,我安装的 ALE 号称是异步的啊。。。要不我安装他干啥。。。

我突然感觉可能问题出在了 vim-go 上,除了 gd 快速查看定义,似乎我也没有用过其他功能。 而且我担心 vim-go 和 ALE 都带了 gofmt,会不会保存时调用两次,造成冲突。 于是,干脆把 vim-go 卸载了。

卸载之后果然如预期的一般丝滑。。。再也不会卡顿了。

修改配置

  • 将记不住的 ALEGoToDefinition 绑定到 gd 上
  • ale_fixers 里添加 gofmt,因为默认 ALE 只有 linter 中有 gofmt,不会出现在 fixer 中
  • 去掉了 ale_linters 中的 golint,那货的规则迂腐之极,我再也不想整天纠结 userID 还是 userId,以及强制写注释,感觉装了个爹
" ALE plugin
let g:ale_fixers = {
\   '*': ['remove_trailing_lines', 'trim_whitespace'],
\   'javascript': ['eslint'],
\   'go': ['gofmt'],
\}

let g:ale_linters = {
\   'go': ['gofmt', 'gopls', 'govet'],
\}

" Remap gd to use ALEGoToDefinition and open in a new tab
map gd :ALEGoToDefinition -tab<CR>

注:ctrl+o 返回上一级 buffer 实在记不住,还是新 tab 中打开比较好。

但是在 gopls 分析完之前,跳转指令是没有响应的,得等一会才能看到新 tab。

参考

  • https://vi.stackexchange.com/questions/14403/how-to-go-to-previous-open-buffer-from-vim-command-line
  • https://github.com/dense-analysis/ale

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式