Neovim - 仅在第一次插入时启动 LSP

问题描述 投票:0回答:1

我使用 Tmux 和自动会话来自动恢复我的所有 Neovim 会话。我不希望为我尚未编辑的项目启动 LSP - 以节省内存和 CPU

在第一次 InsertEnter 时,我想启动 LSP,它应该正常运行一段时间

我该如何配置?

—-

此外,在用户活动超时(例如 30 分钟)后,我希望 LSP 停止,直到下一个 InsertEnter

neovim
1个回答
0
投票

我会按照以下步骤进行:

  • 首先,禁用 LSP 服务器自动启动,设置 autostart 在 lsp 设置方法中设置为 false,如下所示:
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 帮助阅读:

  • :h 自动命令
  • :h lsp
© www.soinside.com 2019 - 2024. All rights reserved.