1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-25 09:10:03 +08:00
SpaceVim/docs/cn/layers/language-server-protocol.md
Wang Shidong 1472a549c6
Doc: improve SpaceVim doc (#1758)
* Update shell layer doc

* Update script for update layer index

* Update script for update layer index

* Update colorscheme layer doc

* Update autocomplete layer doc

* Update checkers layer doc

* Update chinese layer doc

* Update chat layer doc

* Update faq

* Update VersionControl layer doc

* Update help file

* Update cscope layer doc

* Use cn group

* Update debug layer doc

* Update ctrlp layer doc

* Update default layer doc

* Improve the community page

* Improve the community page

* Update default layer doc

* Update denite layer doc

* Update git layer doc

* Update ui layer doc

* Update tags layer doc

* Update leaderf layer doc

* Update fzf layer doc

* Update unite layer doc

* Update tools layer doc

* Update index

* Update tools#dash layer doc

* Update lsp layer doc

* Update faq
2018-05-27 13:05:57 +08:00

3.7 KiB
Raw Blame History

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

可用模块 >> lsp

模块描述

lsp 模块提供了 language-server-protocol 的支持, 这以模块在 LanguageClient-neovim 基础上做了许多定制, 这一链接为一克隆的版本,需要 +python 支持。

同时,当你的 Vim 不支持 +python3 时,我们采用 vim-lsp 这一使用纯 vim 脚本书写的插件。

neovim 团队也在尝试实现一个内置的 lsp 框架,后续该框架完成后,在 neovim 内将默认使用该框架。

在 SpaceVim 内部lsp 的框架选择逻辑大致时这样的:

if has('nvim')
  " use neovim build-in lsp
elseif has('python3')
  " use LanguageClient-neovim
else
  " use vim-lsp
endif

模块特性

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

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

模块安装

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

[[layers]]
  name = "lsp"

安装语言服务器

JavaScript:

npm install -g javascript-typescript-langserver

Python:

pip install --user python-language-server

模块配置

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

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

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

语言 命令
javascript ['javascript-typescript-stdio']
haskell ['hie', '--lsp']
c ['clangd']
cpp ['clangd']
html ['html-languageserver', '--stdio']
objc ['clangd']
objcpp ['clangd']
dart ['dart_language_server']
go ['go-langserver', '-mode', 'stdio']
rust ['rustup', 'run', 'nightly', 'rls']
python ['pyls']
php ['php', 'path/to/bin/php-language-server.php']

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

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

快捷键

按键 描述
K / SPC l d 显示文档
SPC l e 重命名 symbol