在使用 Neovim 启用 LSP 后,我为 NERDTree 和 Telescope 设置的按键绑定不起作用

在我的 NeoVim 配置中出现了问题。在实现使用 lspconfig 启用 LSP 后,我发现我设置的 NERDTree 和其他扩展 (Telescope) 的键不起作用。但是当我执行 Nerdtree 函数时它能够工作。所以问题可能来自于某种按键绑定的错误配置。

我为 lspconfig 设置的配置如下:


lua << EOF
local nvim_lsp = require('lspconfig')

-- 使用 on_attach 函数只在语言服务器连接到当前缓冲区时映射以下键
local on_attach = function(client, bufnr)
  local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
  local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end

  -- 启用由 <c-x><c-o> 触发的补全
  buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')

  -- 按键绑定。
  local opts = { noremap=true, silent=true }

  -- 了解下面的函数的文档,请参阅 `:help vim.lsp.*`
  buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
  buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
  buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
  buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
  buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
  buf_set_keymap('n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
  buf_set_keymap('n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
  buf_set_keymap('n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
  buf_set_keymap('n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
  buf_set_keymap('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
  buf_set_keymap('n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
  buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
  buf_set_keymap('n', '<leader>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
  buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
  buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
  buf_set_keymap('n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
  buf_set_keymap('n', '<leader>F', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
end

-- 使用循环方便地在多个服务器上调用 'setup',并
-- 当语言服务器连接时映射缓冲区本地按键
local servers = { 'pyright', 'rust_analyzer', 'tsserver', 'eslint' }
for _, lsp in ipairs(servers) do
  nvim_lsp[lsp].setup {
    on_attach = on_attach,
    flags = {
      debounce_text_changes = 150,
    }
  }
 end
 EOF

我为 NERDTree 设置的按键绑定是:

map <leader>t :call NERDTreeToggle()<CR>

经过一些配置调整之后,我还是没有想出可能出现的问题。任何帮助都将是有用的。

谢谢

原文链接 https://stackoverflow.com/questions/69749336

点赞
stackoverflow用户372599
stackoverflow用户372599

你尝试过检查键位绑定吗?我会尝试以下操作:

:map

当你移除 lspconfig 后,NERDTree 是否还能正常工作?

2021-12-15 23:50:23