SpaceVim

一个模块化的 Vim/Neovim 配置集合


主页 | 关于我们 | 入门指南 | 使用文档 | 开发指南 | 用户社区 | 赞助 | English


可用模块 » lsp

模块描述

lsp 模块提供了 language-server-protocol 的支持, 默认使用的 lsp 插件为:

  1. vim-lsp: for vim
  2. LanguageClient-neovim: for neovim
  3. built-in lsp: for neovim(>=0.5.0)

模块特性

注: 以上所有信息依赖于语言服务器所实现的功能,请查阅 Language Servers 列表。

模块安装

默认未载入,如需载入该模块,可在配置文件加入:

[[layers]]
  name = "lsp"

安装语言服务器

Bash

npm i -g bash-language-server

JavaScript:

npm install -g javascript-typescript-langserver

Python:

pip install --user python-language-server

julia:

安装 LanguageServer 包需要 Julia(0.6 或更高版本).

julia> Pkg.clone("https://github.com/JuliaEditorSupport/LanguageServer.jl")

在 Julia 0.7 新的包管理系统下,可以在 REPL 模式下进行安装,只需要输入 ] 即可切入到包管理模式, 然后执行 add LanguageServer 来安装对应的包。

vue:

npm install vue-language-server -g

css:

npm install -g vscode-css-languageserver-bin

ruby:

gem install solargraph

vim

npm install -g vim-language-server

模块配置

为指定模块启用语言服务器支持,需要在载入模块时,指定 filetypes 选项:

[[layers]]
  name = "lsp"
  filetypes = [
    "rust",
    "javascript"
  ]

默认语言服务器的执行命令列表如下:

语言 命令
ada ['ada_language_server']
c ['clangd']
cpp ['clangd']
crystal ['scry']
css ['css-languageserver', '--stdio']
dart ['dart_language_server']
elm ['elm-language-server']
go ['gopls']
haskell ['hie', '--lsp']
html ['html-languageserver', '--stdio']
javascript ['typescript-language-server', '--stdio']
javascriptreact ['typescript-language-server', '--stdio']
julia ['julia', '--startup-file=no', '--history-file=no', '-e', 'using LanguageServer; server = LanguageServer.LanguageServerInstance(STDIN, STDOUT, false); server.runlinter = true; run(server);']
objc ['clangd']
objcpp ['clangd']
php ['php', 'path/to/bin/php-language-server.php']
purescript ['purescript-language-server', '--stdio']
python ['pyls']
ruby ['solargraph', 'stdio']
reason ['ocaml-language-server']
rust ['rustup', 'run', 'nightly', 'rls']
sh ['bash-language-server', 'start']
typescript ['typescript-language-server', '--stdio']
typescriptreact ['typescript-language-server', '--stdio']
vim ['vim-language-server', '--stdio']
vue ['vls']

如果需要修改语言服务器的命令,在载入模块时,需要指定 override_cmd 选项:

[[layers]]
  name = "lsp"
  filetypes = [
    "rust",
    "javascript"
  ]
  [layers.override_cmd]
    rust = ["rustup", "run", "nightly", "rls"]

如果使用的是nvim(>=0.5.0),则需要指定 enabled_clients 选项:

[[layers]]
    name = 'lsp'
    enabled_clients = ['vimls', 'clangd']

快捷键

快捷键 功能描述
K / SPC l d 显示文档
SPC l e 重命名 symbol

如果 checkers 模块未载入,则以下快捷键将被引入:

快捷键 功能描述
SPC e c 清除错误列表
SPC e n 跳至下一个语法错误位置
SPC e N 跳至上一个语法错误位置
SPC e p 跳至上一个语法错误位置
SPC e l 列出错误列表窗口
SPC e L 列出错误列表窗口并跳至该窗口

由Jekyll强力驱动