slogan3

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

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