Comments (4)
For better or worse the .on_attach
function is the recommended way of making lsp specific keybindings with builtin lsp client.
If it helps, this snippet implements the default keybindings in the .on_attach
function. You can modify whatever you like. Explanation for each keybinding can be found in the help page :help lsp-zero-keybindings
.
lsp.on_attach(function(client, bufnr)
local map = function(mode, lhs, rhs)
local opts = {remap = false, buffer = bufnr}
vim.keymap.set(mode, lhs, rhs, opts)
end
-- LSP actions
map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>')
map('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<cr>')
map('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>')
map('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>')
map('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>')
map('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>')
map('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<cr>')
map('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<cr>')
map('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>')
map('x', '<F4>', '<cmd>lua vim.lsp.buf.range_code_action()<cr>')
-- Diagnostics
map('n', 'gl', '<cmd>lua vim.diagnostic.open_float()<cr>')
map('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<cr>')
map('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>')
end)
from lsp-zero.nvim.
The link you mention is part of the section "Customizing nvim-cmp". That's how you configure the autocompletion engine, is not directly related to the "lsp functions".
You can override the default keymaps with the .on_attach
function.
local lsp = require('lsp-zero')
lsp.preset('recommended')
lsp.on_attach(function(client, bufnr)
local noremap = {buffer = bufnr, remap = false}
local bind = vim.keymap.set
bind('n', '<C-k>', '<C-w>k', noremap)
end)
lsp.setup()
You could also disable all "lsp keymaps" if you wanted to.
local lsp = require('lsp-zero')
lsp.preset('recommended')
lsp.set_preferences({
set_lsp_keymaps = false
})
lsp.on_attach(function(client, bufnr)
local noremap = {buffer = bufnr, remap = false}
local bind = vim.keymap.set
-- use bind to make your own keymaps
end)
lsp.setup()
from lsp-zero.nvim.
Thank @VonHeikemen for quick response.
Yes, on_attach approach works, though quite hackish (now my mappings are duplicated in original place and in lsp-zero config). As those keybindings are introduced by this plugin, would be great to have a unified way to enable/disable individual keybindings.
You could also disable all "lsp keymaps" if you wanted to.
Yes, I tried that. But I still want to keep majority of those default keybindings, and figuring out how to do it properly would take time.
from lsp-zero.nvim.
Awesome, thank you so much!
from lsp-zero.nvim.
Related Issues (20)
- How to integrate conform.nvim with lsp-zero.nvim HOT 2
- Need help to load friendly-snippets HOT 1
- lsp_zero.cmp_format() hides important information for rust_analyzer HOT 2
- error installing gopls(same thing happend with hls) HOT 2
- error installing hls(haskell server) HOT 1
- Allow setting max width on vim.diagnostics
- Add docs or possible fix for Volar 2? HOT 4
- method textDocument/definition is not supported by any of the servers registered for the current buffer HOT 6
- Hi @VonHeikemen, came here after an year coz it was unmaintained, i grew up a lot in this time period, help me get back to `lsp-zero` HOT 3
- Undercurls to display errors HOT 2
- How do I turn off inlay hints? HOT 2
- Cannot get auto complete to work HOT 5
- How to configure efm? HOT 1
- Duplicate prefixes HOT 1
- lsp-zero conflict with noice shipped in LazyVim HOT 2
- Function signature helper HOT 1
- lsp server seem to be configured before .extend_lspconfig() HOT 4
- Question: Doc site HOT 2
- Error: failed to run 'config' for nvim-lspconfig HOT 3
- default keymaps not working correctly HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lsp-zero.nvim.