最近写了一个 Go 实现的 Vim script / Vim9 script 语言服务器 vimls-go,刚发布了 0.1.0 ,想请平时写 Vim 配置、插件的朋友试试。

项目: https://github.com/neoclide/vimls-go

下载: https://github.com/neoclide/vimls-go/releases/tag/v0.1.0

目前提供补全、hover 文档、签名提示、跳转定义、查找引用、诊断、语义高亮和重命名等功能,也支持 Vim9 import 和 autoload 的跨文件分析。格式化目前主要处理缩进。

有个我自己很需要的功能:它会扫描 runtimepath 中的 Vim 文件,并提取 doc/*.txt 里的帮助文档。写插件变量、函数或命令时,可以直接在 hover 里看到对应帮助,附带来源文件路径和行号。runtimepath 变化时会增量更新。

服务端是独立二进制,可以搭配 Vim 中的 coc.nvim 、vim-lsp 等 LSP 客户端使用。下载对应平台的文件、将可执行文件命名为 vimls 并放进 PATH 后,coc.nvim 可以这样配置:

{
  "languageserver": {
    "vimls": {
      "command": "vimls",
      "filetypes": ["vim"]
    }
  }
}

这是第一个发布版本,静态分析对 execute、运行时动态生成的名称等情况仍有限制,也不承诺覆盖所有语法细节。欢迎带上最小复现到 GitHub 提 issue ,尤其想了解大家实际插件和配置里遇到的误报、漏报以及补全问题。