配置 Vim/Neovim ALE 插件以支持 JavaScript 文件中的 :ALEGoToDefinition

Configuring Vim/Neovim ALE plugin to support :ALEGoToDefinition in JavaScript files

我使用 vim-plug:

为 Vim 安装了 ALE 插件
Plug 'dense-analysis/ale'

插件似乎已正确安装。例如,我可以使用 ALE 通过 Prettier 自动格式化文件。但我似乎无法获得任何使用语言服务器工作的东西。

例如,在下面的JavaScript文件中,将光标放在第5行的名称add上并使用:ALEGoToDefinition命令没有任何效果。

function add(x, y) {
  return x + y;
}

console.log(add(1, 2));

我真的很努力地阅读了文档。 ALE 帮助文件说 "ALE will do nothing" 如果 LSP 服务器不提供跳转到的位置。这似乎是我的问题。但是 ALE documentation on GitHub 也表示 "ALE integrates with almost all JavaScript tools very well, and most things should work without requiring any configuration."

我一定是漏掉了什么。除了安装 ALE 之外,是否需要任何东西来启用使用语言服务器的功能?我应该在我的机器上全局安装某种语言服务器吗?

Reddit 上的用户 toupeira 为我回答了这个问题。在撰写本文时,ALE 支持的唯一 JavaScript 语言服务器是 tsserver。它附带 TypeScript。要启用 ALE 的语言服务器功能,我需要全局安装 typescript 包。

npm install -g typescript

我不需要手动启动服务器。 ALE 似乎可以解决这个问题。

唯一的其他要求是将 tsserver 作为 JavaScript“linter”启用。这是默认情况。 运行 :ALEInfo 查看当前文件启用了哪些 linter。