docs/cn/layers/language-server-protocol.md
lsp 模块提供了 language-server-protocol 的支持, 默认使用的 lsp 插件为:
注: 以上所有信息依赖于语言服务器所实现的功能,请查阅 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 | 列出错误列表窗口并跳至该窗口 |