使用 ALE 替换 vim-go 插件

文章目录

    我目前 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式