spacevim/docs/cn/layers/language-server-protocol.md
JIe 2bb7059579
Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
init
2024-08-21 14:17:26 +08:00

9.4 KiB
Raw Blame History

title description lang
SpaceVim lsp 模块 这一模块为 SpaceVim 提供了 language server protocol 的支持,提供更多语言相关服务。 zh

可用模块 >> 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)

模块特性

  • 异步调用,避免卡顿
  • 代码补全,(需要载入 autocomplet 模块)
  • 实时代码语法检查
  • 重命名函数
  • 显示错误信息
  • 跳至定义处
  • 列举所有引用
  • 文档检索
  • 代码格式化
  • 代码自动修复

注: 以上所有信息依赖于语言服务器所实现的功能,请查阅 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 包需要 Julia0.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 列出错误列表窗口并跳至该窗口