Fork me on GitHub

SpaceVim

A community-driven vim distribution


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


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

模块特性

注: 以上所有信息依赖于语言服务器所实现的功能,请查阅 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

网站源码位于 Github, 帮助改进本页面 — 网站主题: mattgraham,