nvim-lspconfig — это репозиторий «только для данных», предоставляющий базовые конфигурации клиента Nvim LSP по умолчанию для различных серверов LSP.
Просмотрите документацию по всем конфигурациям или :help lspconfig-all
от Nvim.
:help lsp
), сообщите об этом в ядро Neovim. git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig
npm i -g pyright
require ' lspconfig ' . pyright . setup {}
:help lspconfig-all
. nvim main.py
:checkhealth lsp
чтобы просмотреть состояние или устранить неполадки. Прочтите :help lspconfig
для получения подробной информации. Прочтите :help lspconfig-all
для получения полного списка деталей, относящихся к конкретному серверу. Для серверов, не находящихся в вашем $PATH
(например, jdtls
, elixirls
), вы должны вручную установить параметр cmd
при вызове setup()
.
Nvim устанавливает некоторые параметры и сопоставления по умолчанию, когда буфер подключается к LSP (см. :help lsp-config
). В частности:
'tagfunc'
и других команд тегов.'omnifunc'
в режиме вставки. Для автозаполнения требуется плагин автозаполнения.'formatexpr'
gq
.K
отображается в vim.lsp.buf.hover()
в обычном режиме.[d
и ]d
сопоставляются с vim.diagnostic.goto_prev()
и vim.diagnostic.goto_next()
соответственно.d
сопоставляется с vim.diagnostic.open_float()
. Дальнейшую настройку можно выполнить с помощью события автокоманды LspAttach
. Событие автокоманды LspDetach
можно использовать для «очистки» сопоставлений, если буфер отсоединяется от сервера LSP. Подробности и примеры смотрите :h LspAttach
и :h LspDetach
. См :h lsp-buf
для получения подробной информации о других функциях LSP.
Дополнительные параметры конфигурации могут быть предоставлены для каждого сервера LSP путем передачи аргументов функции setup
. Подробности смотрите в разделе :h lspconfig-setup
. Пример:
local lspconfig = require ( ' lspconfig ' )
lspconfig . rust_analyzer . setup {
-- Server-specific settings. See `:help lspconfig-setup`
settings = {
[ ' rust-analyzer ' ] = {},
},
}
Наиболее распространенные причины, по которым языковой сервер не запускается или не подключается:
cmd
определенный в модуле Lua каждого сервера, из командной строки и увидеть, что языковой сервер запускается. Если cmd
— это имя исполняемого файла, а не абсолютный путь к исполняемому файлу, убедитесь, что он находится на вашем пути.:set ft?
показывает тип файла, а не пустое значение..git
, но каждый сервер определяет корневую конфигурацию в файле lua. См. doc/configs.md или источник для списка корневых каталогов.capabilities
для каждой setup {}
если хотите, чтобы они вступили в силу.setup {}
дважды для одного и того же сервера . Второй вызов setup {}
перезапишет первый. Если вы обнаружили ошибку в работе LSP, сообщите об этом в ядро Neovim.
Прежде чем сообщать об ошибке, проверьте свои журналы и выходные данные :LspInfo
. Добавьте следующее в свой init.vim, чтобы включить ведение журнала:
vim . lsp . set_log_level ( " debug " )
Попытайтесь запустить языковой сервер и откройте журнал с помощью:
:LspLog
В большинстве случаев причина сбоя указана в журналах.
:LspInfo
(устаревший псевдоним :che lspconfig
) показывает состояние активных и настроенных языковых серверов.:LspStart
Запускает сервер с запрошенным именем. Успешно запустится только в том случае, если команда обнаружит корневой каталог, соответствующий текущей конфигурации. Передайте autostart = false
в вызов .setup{}
языкового сервера, если вы хотите запускать клиенты исключительно с помощью этой команды. По умолчанию используются все серверы, соответствующие текущему типу файла буфера.:LspStop
По умолчанию останавливает всех клиентов буфера.:LspRestart
По умолчанию перезапускает все клиенты буфера. Если языковой сервер отсутствует в configs.md, добавление новой конфигурации поможет другим, особенно если сервер требует специальной настройки. Выполните следующие действия:
lua/lspconfig/configs/SERVER_NAME.lua
.Чтобы опубликовать релиз:
Авторские права участников Neovim. Все права защищены.
nvim-lspconfig лицензируется в соответствии с условиями лицензии Apache 2.0.
См. LICENSE.md