我使用 Tmux 和自动会话来自动恢复我的所有 Neovim 会话。我不希望为我尚未编辑的项目启动 LSP - 以节省内存和 CPU
在第一次 InsertEnter 时,我想启动 LSP,它应该正常运行一段时间
我该如何配置?
—-
此外,在用户活动超时(例如 30 分钟)后,我希望 LSP 停止,直到下一个 InsertEnter
我会按照以下步骤进行:
lsp_config.bashls.setup({
autostart = false,
... rest of configuration
})
仅在 InsertEnter 事件上启动相关 LSP 服务器(示例) 对于bashls:
创建自动命令以启动 LSP 服务器
local group = vim.api.nvim_create_augroup("lsp-tricks", { clear = true })
vim.api.nvim_create_autocmd("InsertEnter", {
pattern = { "*.sh" },
callback = function(ev)
-- logic to start lsp server, be sure to not start multiple instances
-- at once, check neovim api
-- possible command to start server vim.cmd([[ :LspStart bashls ]])
end,
group = group
})
不活动后关闭 LSP 服务器
您仅受lua的限制:),选项之一是每次尝试启动 lsp 服务器时创建某种标记(写入文件时间戳等...)并以某种方式在 lua 或中重新检查它将此类检查绑定到另一个 neovim 事件。
有用的 neovim 帮助阅读: