首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法为javascript和html激活NVIM的内置LSP

我无法为javascript和html激活NVIM的内置LSP
EN

Stack Overflow用户
提问于 2020-11-17 01:29:21
回答 2查看 9.2K关注 0票数 2

我正在尝试利用NVIM的内置LSP。虽然我已经能够为css和python实现LSP,但在javascript和html方面还没有成功。

我安装了LSPs

代码语言:javascript
复制
:LspInstall <LSP>

下面是我加载LSP的方式:

代码语言:javascript
复制
packadd nvim-lspconfig
packadd completion-nvim

:lua << EOF
  local nvim_lsp = require('nvim_lsp')
  local on_attach = function(_, bufnr)
    require('completion').on_attach()
    local opts = { noremap=true, silent=true }
  end
  local servers = {'tsserver', 'cssls', 'html', 'pyls'}
  for _, lsp in ipairs(servers) do
    nvim_lsp[lsp].setup {
      on_attach = on_attach
    }
    print("lsp istalled -", lsp)
  end
EOF

*LspInstallInfo显示:

代码语言:javascript
复制
{                                                                                                          
  cssls = {
    bin_dir = "~/.cache/nvim/nvim_lsp/cssls/node_modules/.bin",
    binaries = {
      ["css-languageserver"] = "~/.cache/nvim/nvim_lsp/cssls/node_modules/.bin/css-languageserver"
    },
    install_dir = "~/.cache/nvim/nvim_lsp/cssls",
    is_installed = true
  },
  html = {
    bin_dir = "~/.cache/nvim/nvim_lsp/html/node_modules/.bin",
    binaries = {
      ["html-languageserver"] = "~/.cache/nvim/nvim_lsp/html/node_modules/.bin/html-languageserver"
    },
    install_dir = "~/.cache/nvim/nvim_lsp/html",
    is_installed = true
  },      
  tsserver = {
    bin_dir = "~/.cache/nvim/nvim_lsp/tsserver/node_modules/.bin",
    binaries = {
      ["typescript-language-server"] = "~/.cache/nvim/nvim_lsp/tsserver/node_modules/.bin/typescript
-language-server"
    },    
    install_dir = "~/.cache/nvim/nvim_lsp/tsserver",
    is_installed = true
  }       
}         

它们似乎已经安装好了,用于*.css和*.py的LSP运行得很好。

当我打开*.js、*.ts或*.html文件时,我会得到与:LspInstallInfo命令相同的响应。但是,我不认为LSP是活动的,因为我没有收到任何警告或错误消息无视我所输入的内容。

我尝试过以不同的方式加载LSP,包括:

代码语言:javascript
复制
require'nvim_lsp'.tsserver.setup{}
require'nvim_lsp'.html.setup{}

我偶然看到一篇关于安装打字本的帖子,但它似乎没有任何效果。

我已经关闭了所有其他插件,并有相同的结果。

EN

回答 2

Stack Overflow用户

发布于 2021-06-28 06:00:14

安装之后,您应该考虑root_dir。因此,如果没有匹配的根目录,LSP就不会启动。

为了自动启动语言服务器,lspconfig从当前缓冲区中搜索目录树,以找到与每个服务器配置中定义的root_dir模式匹配的文件。对于pyright,这是包含".git“、"setup.py”、"setup.cfg“、"pyproject.toml”或“requirements.txt”的任何目录)。 语言服务器要求每个项目都有一个根,以便在当前文件中可能没有定义的符号之间提供完成和搜索,并避免在每次启动时对整个文件系统进行索引。

,但是如果您想在任何目录中启动LSP,您可以对Javscript使用如下内容:

代码语言:javascript
复制
require'lspconfig'.tsserver.setup{
  filetypes = { "typescript", "typescriptreact", "typescript.tsx" },
  root_dir = function() return vim.loop.cwd() end      -- run lsp for javascript in any directory

}
票数 2
EN

Stack Overflow用户

发布于 2021-02-19 09:41:20

我今天正致力于建立neovim 0.5,并在这里寻找其他与LSP相关的东西。总之,我确实有一个工作安排,这里有一个简短的:

  1. 每晚安装新版本(>= 0.5版本)
  2. 安装nvim-lspconfig软件包(我使用vim-插件)
  3. 安装tsserver服务器npm i -g typescript-language-server
  4. 在init.vim中添加安装程序(如果init.lua,请删除EOF行):
代码语言:javascript
复制
lua << EOF 
require'lspconfig'.tsserver.setup{}
EOF 
  1. 重新启动新生

我注意到您正在使用像LspInstallLspInstallInfo这样的命令,但是它们不在我的设置中。恐怕我不能评论他们为什么会像预期的那样工作。

LSP本身并不显示自动完成。必须使用另一个插件。我在completion-nvim上取得了很好的成绩

这是一个很好的参考:neovim-and-its-built-in-language-server-protocol

哦,如果你还没读过的话,一定要给:help lsp读一读。干杯!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64868071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档