Ontwerp een Neovim Setup voor Geavanceerde Navigatie en Code Inspectie
description
Met deze prompt kan de gebruiker een Neovim-configuratie ontwerpen die gericht is op geavanceerde navigatie en code-inspectie, waardoor het makkelijker wordt om grote codebases te beheren en sneller door code te navigeren. Dit lost het probleem op van inefficiënte codeoverzichten en trage navigatie, en biedt een gerichte aanpak die verder gaat dan standaard configuraties. De gebruiker krijgt concrete plugin- en keybinding aanbevelingen, afgestemd op de gebruikte programmeertalen.
prompt
Help me een Neovim-configuratie te creëren die geavanceerde navigatie en code-inspectiefuncties integreert. Ik wil mijn workflow verbeteren met features zoals symbolenoverzicht, code folding, en snelle navig ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Zeker! Hier is een uitgebreide Neovim-configuratie in Lua die geavanceerde navigatie, symbolenoverzicht, code folding en snelle navigatie tussen definities en referenties integreert voor Python en Lua. Ik geef ook suggesties voor plugins, keybindings en instellingen.
---
### 1. **Pluginbeheer**
Gebruik bijvoorbeeld [packer.nvim](https://github.com/wbthomason/packer.nvim) als pluginmanager.
```lua
-- init.lua of een aparte plugins.lua
require('packer').startup(function()
use 'wbthomason/packer.nvim'
-- LSP en completion
use 'neovim/nvim-lspconfig'
use 'hrsh7th/nvim-cmp'
use 'hrsh7th/cmp-nvim-lsp'
use 'L3MON4D3/LuaSnip'
use 'saadparwaiz1/cmp_luasnip'
-- Symbolen en overzicht
use 'simrat39/symbols-outline.nvim'
use 'folke/which-key.nvim'
-- Code folding en navigatie
use 'nvim-treesitter/nvim-treesitter'
use 'nvim-telescope/telescope.nvim'
use 'nvim-telescope/telescope-symbols.nvim'
-- Optional: extra plugins voor beter ervaring
use 'nvim-lua/plenary.nvim'
end)
```
---
### 2. **Instellingen en basisconfiguratie**
```lua
-- basis instellingen
vim.o.number = true
vim.o.relativenumber = true
vim.o.foldmethod = 'indent'
vim.o.foldenable = true
vim.o.incsearch = true
vim.o.hlsearch = true
vim.o.termguicolors = true
```
---
### 3. **Treesitter voor geavanceerde code folding en highlighting**
```lua
require'nvim-treesitter.configs'.setup {
ensure_installed = { 'python', 'lua' },
highlight = { enable = true },
incremental_selection = { enable = true },
indent = { enable = true },
folding = { enable = true }
}
```
### 4. **LSP-Configuratie voor Python en Lua**
```lua
local lspconfig = require('lspconfig')
-- Python (met pyright)
lspconfig.pyright.setup{}
-- Lua (met sumneko_lua)
lspconfig.sumneko_lua.setup {
settings = {
Lua = {
diagnostics = {
globals = {'vim'}
}
}
}
}
```
### 5. **Completion en snippet**
```lua
local cmp = require'cmp'
cmp.setup({
snippet = {
expand = function(args)
require'luasnip'.lsp_expand(args.body)
end,
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
mapping = cmp.mapping.preset.insert({
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
})
```
### 6. **Symbolenoverzicht (Symbols Outline)**
```lua
vim.api.nvim_set_keymap('n', '<Leader>so', ':SymbolsOutline<CR>', { noremap = true, silent = true })
require("symbols-outline").setup()
```
### 7. **Navigatie tussen definities en referenties**
Gebruik LSP-functies met keybindings:
```lua
local opts = { noremap=true, silent=true }
vim.api.nvim_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
vim.api.nvim_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
vim.api.nvim_set_keymap('n', 'gi', '<Cmd>lua vim.lsp.buf.implementation()<CR>', opts)
vim.api.nvim_set_keymap('n', 'gr', '<Cmd>lua vim.lsp.buf.references()<CR>', opts)
```
### 8. **Code folding verbeteren**
Met Treesitter en standaard instellingen:
```lua
-- Toggle fold
vim.api.nvim_set_keymap('n', 'za', 'za', { noremap = true, silent = true })
-- Opstarten met alle folds open
vim.cmd('set foldmethod=expr')
vim.cmd('set foldexpr=nvim_treesitter#foldexpr()')
```
### 9. **Extra: Gebruik 'which-key' voor overzichtelijke keybindings**
```lua
require("which-key").setup {}
-- Bijvoorbeeld:
local wk = require("which-key")
wk.register({
['<Leader>'] = {
s = {
name = "Symbolen",
o = { "<Cmd>SymbolsOutline<CR>", "Symbolen overzicht" },
},
d = { "<Cmd>lua vim.lsp.buf.definition()<CR>", "Definitie" },
r = { "<Cmd>lua vim.lsp.buf.references()<CR>", "Referenties" },
}
})
```
---
### Samenvatting van functionaliteiten:
- **Symbolenoverzicht:** `SymbolsOutline` plugin, snel openen met `<Leader>so`.
- **Code folding:** Treesitter-configuratie met `za` om te vouwen/ontvouwen.
- **Navigatie:** `gd`, `gD`, `gi`, `gr` voor navigatie tussen definities, implementaties, referenties.
- **Code highlighting en folding:** Treesitter.
- **Autocomplete:** nvim-cmp met LSP-ondersteuning.
- **Multi-language:** Python en Lua ondersteund.
---
Als je deze configuratie combineert, krijg je een krachtige ontwikkelomgeving voor Python en Lua die je workflow aanzienlijk verbetert. Mocht je meer specifieke wensen hebben of hulp bij het installeren, laat het gerust weten!
provider: deepseek
model: deepseek-chat
Zeker! Hier is een complete Neovim-configuratie voor geavanceerde navigatie en code-inspectie, geoptimaliseerd voor Python en Lua:
## init.lua - Hoofdconfiguratie
```lua
-- Packer plugin manager installeren
local fn = vim.fn
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
if fn.empty(fn.glob(install_path)) > 0 then
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
vim.cmd 'packadd packer.nvim'
end
-- Plugins configuratie
require('packer').startup(function(use)
use 'wbthomason/packer.nvim'
-- Navigatie & Symbolen
use 'preservim/tagbar' -- Symbolenoverzicht
use 'simrat39/symbols-outline.nvim' -- Alternatief symbolenoverzicht
use 'phaazon/hop.nvim' -- Snelle navigatie binnen bestand
-- LSP & Autocompletion
use 'neovim/nvim-lspconfig' -- LSP configuratie
use 'hrsh7th/nvim-cmp' -- Autocompletion
use 'hrsh7th/cmp-nvim-lsp'
use 'hrsh7th/cmp-buffer'
use 'hrsh7th/cmp-path'
-- Code inspectie & Navigatie
use 'nvim-treesitter/nvim-treesitter' -- Syntax highlighting
use 'nvim-treesitter/nvim-treesitter-context' -- Context behouden
use 'rmagatti/goto-preview' -- Preview definities
-- Code folding
use 'pseewald/anyfold' -- Geavanceerde folding
use 'Konfekt/FastFold' -- Snellere folding
-- File navigatie
use 'kyazdani42/nvim-tree.lua' -- File explorer
use 'nvim-telescope/telescope.nvim' -- Fuzzy finder
use 'nvim-lua/plenary.nvim' -- Vereist voor telescope
end)
-- Basisinstellingen
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.mouse = 'a'
vim.opt.clipboard = 'unnamedplus'
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.foldmethod = 'expr'
vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
vim.opt.foldlevel = 99
-- Keybindings
local map = vim.api.nvim_set_keymap
local opts = { noremap = true, silent = true }
-- Navigatie tussen definities
map('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
map('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
map('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
map('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
-- Symbolenoverzicht
map('n', '<leader>s', ':SymbolsOutline<CR>', opts)
map('n', '<leader>S', ':TagbarToggle<CR>', opts)
-- Code folding
map('n', 'zR', ':set foldlevel=99<CR>', opts) -- Alles openen
map('n', 'zM', ':set foldlevel=0<CR>', opts) -- Alles sluiten
map('n', 'za', 'za', opts) -- Toggle fold
-- Snelle navigatie met Hop
map('n', 'f', ':HopChar1<CR>', opts)
map('n', 'F', ':HopWord<CR>', opts)
-- Telescope fuzzy finder
map('n', '<leader>ff', ':Telescope find_files<CR>', opts)
map('n', '<leader>fg', ':Telescope live_grep<CR>', opts)
map('n', '<leader>fb', ':Telescope buffers<CR>', opts)
-- LSP Configuratie
local lspconfig = require('lspconfig')
-- Python LSP
lspconfig.pyright.setup({
on_attach = function(client, bufnr)
-- LSP keybindings
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
end
})
-- Lua LSP
lspconfig.lua_ls.setup({
settings = {
Lua = {
diagnostics = {
globals = { 'vim' }
}
}
}
})
-- Treesitter configuratie
require('nvim-treesitter.configs').setup({
ensure_installed = { 'python', 'lua', 'bash', 'json' },
highlight = { enable = true },
indent = { enable = true },
folding = { enable = true },
})
-- Hop configuratie (snel navigeren)
require('hop').setup()
-- Symbols outline configuratie
require('symbols-outline').setup()
-- Auto commands voor betere workflow
vim.api.nvim_create_autocmd('FileType', {
pattern = { 'python', 'lua' },
callback = function()
vim.opt_local.foldmethod = 'expr'
vim.opt_local.foldexpr = 'nvim_treesitter#foldexpr()'
end
})
```
## Aanvullende installatiestappen:
1. **Installeer LSP servers:**
```bash
# Python
npm install -g pyright
# Lua
npm install -g lua-language-server
```
2. **Installeer Treesitter parsers:**
```vim
:TSInstall python
:TSInstall lua
:TSInstall bash
```
3. **Installeer plugins:**
```vim
:PackerSync
```
## Aanbevolen keybindings:
- `gd` - Ga naar definitie
- `gr` - Toon referenties
- `<leader>s` - Symbolen overzicht
- `za` - Toggle code fold
- `f` - Spring naar karakter (Hop)
- `<leader>ff` - Bestanden zoeken
## Extra plugin suggesties:
- `folke/trouble.nvim` - Voor gestructureerde LSP diagnostics
- `andymass/vim-matchup` - Verbeterde bracket matching
- `windwp/nvim-autopairs` - Automatische paren afsluiting
Deze configuratie biedt een complete ontwikkelomgeving met geavanceerde navigatie, code-inspectie en productiviteitsfeatures specifiek voor Python en Lua ontwikkeling!
error: Generation failed [deepseek] prompt_id=2801 locale=en err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2801 locale=fr err=DeepSeek connection/timeout