slogan3

Optimaliseer mijn Neovim workflow met aangepaste Lua-configuratie

description

Helpt mij een persoonlijke en efficiënte Neovim-configuratie te krijgen die aansluit bij mijn specifieke programmeertalen en workflowbehoeften, waardoor ik tijd bespaar en productiever ben dan met generieke configuraties.

prompt

Help me een gepersonaliseerde Neovim Lua-configuratie te maken die mijn ontwikkelworkflow verbetert. Mijn belangrijkste programmeertalen zijn: <belangrijkste_programmeertalen>. Ik wil ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een basisvoorbeeld van een gepersonaliseerde Neovim Lua-configuratie die jouw ontwikkelworkflow voor Python en JavaScript verbetert, inclusief aanbevelingen voor plugins en sneltoetsen: 1. Basisinstellingen en pluginbeheer Gebruik bijvoorbeeld packer.nvim voor pluginbeheer. ```lua -- init.lua vim.cmd([[packadd packer.nvim]]) require('packer').startup(function(use) -- Plugin manager use 'wbthomason/packer.nvim' -- LSP en autocompletion use 'neovim/nvim-lspconfig' -- LSP configuraties use 'hrsh7th/nvim-cmp' -- Autocompletion framework use 'hrsh7th/cmp-nvim-lsp' -- LSP completion source use 'saadparwaiz1/cmp_luasnip' -- Snippets use 'L3MON4D3/LuaSnip' -- Snippets engine -- Debugging use 'mfussenegger/nvim-dap' -- Debugger protocol use 'rcarriga/nvim-dap-ui' -- UI voor nvim-dap -- File navigatie use 'nvim-telescope/telescope.nvim' use 'nvim-telescope/telescope-file-browser.nvim' -- Syntax highlighting use 'nvim-treesitter/nvim-treesitter' -- Extra use 'nvim-lua/plenary.nvim' end) ``` 2. LSP en autocompletion instellen voor Python en JavaScript ```lua local nvim_lsp = require('lspconfig') -- Python LSP nvim_lsp.pyright.setup{ on_attach = function(client, bufnr) -- Keybindings kunnen hier end } -- JavaScript/TypeScript LSP nvim_lsp.tsserver.setup{ on_attach = function(client, bufnr) -- Keybindings kunnen hier end } ``` 3. Nvim-cmp configuratie (autocompletion) ```lua local cmp = require'cmp' local luasnip = require'luasnip' cmp.setup{ snippet = { expand = function(args) require'luasnip'.lsp_expand(args.body) end, }, mapping = { ['<C-d>'] = cmp.mapping.scroll_docs(-4), ['<C-f>'] = cmp.mapping.scroll_docs(4), ['<C-Space>'] = cmp.mapping.complete(), ['<CR>'] = cmp.mapping.confirm({ select = true }), }, sources = { { name = 'nvim_lsp' }, { name = 'luasnip' }, }, } ``` 4. Debugging met nvim-dap en UI ```lua local dap = require('dap') local dapui = require('dapui') dapui.setup() -- Keybindings voor debugging vim.api.nvim_set_keymap('n', '<F5>', "<Cmd>lua require'dap'.continue()<CR>", { noremap=true }) vim.api.nvim_set_keymap('n', '<F10>', "<Cmd>lua require'dap'.step_over()<CR>", { noremap=true }) vim.api.nvim_set_keymap('n', '<F11>', "<Cmd>lua require'dap'.step_into()<CR>", { noremap=true }) vim.api.nvim_set_keymap('n', '<F12>', "<Cmd>lua require'dap'.toggle_breakpoint()<CR>", { noremap=true }) -- Open DAP UI vim.api.nvim_set_keymap('n', '<Leader>du', "<Cmd>lua require'dapui'.toggle()<CR>", { noremap=true }) ``` 5. Sneltoetsen voor bestandsnavigatie en zoekopdrachten ```lua -- Telescope vim.api.nvim_set_keymap('n', '<Leader>ff', "<Cmd>lua require'telescope.builtin'.find_files()<CR>", { noremap=true }) vim.api.nvim_set_keymap('n', '<Leader>fg', "<Cmd>lua require'telescope.builtin'.live_grep()<CR>", { noremap=true }) vim.api.nvim_set_keymap('n', '<Leader>fb', "<Cmd>lua require'telescope.builtin'.buffers()<CR>", { noremap=true }) vim.api.nvim_set_keymap('n', '<Leader>fh', "<Cmd>lua require'telescope.builtin'.help_tags()<CR>", { noremap=true }) -- Bestand navigatie vim.api.nvim_set_keymap('n', 'gd', "<Cmd>lua vim.lsp.buf.definition()<CR>", { noremap=true }) vim.api.nvim_set_keymap('n', 'gr', "<Cmd>lua vim.lsp.buf.references()<CR>", { noremap=true }) ``` 6. Extra tips - Gebruik Treesitter voor betere syntax highlighting en code structurering. - Overweeg het gebruik van 'which-key.nvim' voor overzichtelijke sneltoetsen. - Configureer specifieke linting en formattering tools zoals Black voor Python en Prettier voor JavaScript. Door deze configuratie te gebruiken, verbeter je je code completion, debugging, en bestandsnavigatie. Pas de sneltoetsen aan naar je eigen voorkeuren voor maximale efficiëntie!
provider: deepseek
model: deepseek-chat
Zeker! Hier is een uitgebreide Neovim Lua-configuratie afgestemd op Python en JavaScript ontwikkeling, met focus op de door jou genoemde gebieden. ## Basisstructuur (`init.lua`) ```lua -- Zorg dat je de laatste Neovim versie gebruikt (0.8+) vim.g.mapleader = " " vim.g.maplocalleader = " " -- Basisinstellingen vim.opt.number = true vim.opt.relativenumber = true vim.opt.tabstop = 4 vim.opt.shiftwidth = 4 vim.opt.expandtab = true vim.opt.smartindent = true vim.opt.wrap = false vim.opt.termguicolors = true ``` ## Plugin Manager (Lazy.nvim) Voeg eerst toe aan `plugins/init.lua`: ```lua return { { "folke/lazy.nvim", version = "*", lazy = false, priority = 1000, config = function() -- Plugin configuraties komen hier end, }, } ``` ## Essentiële Plugins ### 1. Package Manager (Lazy.nvim) ```lua { "folke/lazy.nvim", version = "*", lazy = false, priority = 1000, } ``` ### 2. Code Completion (nvim-cmp) ```lua { "hrsh7th/nvim-cmp", dependencies = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "hrsh7th/cmp-cmdline", "saadparwaiz1/cmp_luasnip", "L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets", }, config = function() local cmp = require("cmp") cmp.setup({ snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ ["<C-b>"] = cmp.mapping.scroll_docs(-4), ["<C-f>"] = cmp.mapping.scroll_docs(4), ["<C-Space>"] = cmp.mapping.complete(), ["<C-e>"] = cmp.mapping.abort(), ["<CR>"] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "luasnip" }, }, { { name = "buffer" }, }), }) end, } ``` ### 3. LSP Configuratie (Mason + nvim-lspconfig) ```lua { "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", "neovim/nvim-lspconfig", config = function() require("mason").setup() require("mason-lspconfig").setup({ ensure_installed = { "pyright", "tsserver", "html", "cssls", "jsonls" } }) local lspconfig = require("lspconfig") local capabilities = require("cmp_nvim_lsp").default_capabilities() -- Python LSP lspconfig.pyright.setup({ capabilities = capabilities, settings = { python = { analysis = { typeCheckingMode = "basic", autoSearchPaths = true, useLibraryCodeForTypes = true, }, }, }, }) -- JavaScript/TypeScript LSP lspconfig.tsserver.setup({ capabilities = capabilities, }) -- Algemene LSP keybinds vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Ga naar definitie" }) vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Documentatie tonen" }) vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { desc = "Hernoemen" }) vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code acties" }) end, } ``` ### 4. Debugging (nvim-dap) ```lua { "mfussenegger/nvim-dap", dependencies = { "mfussenegger/nvim-dap-python", "rcarriga/nvim-dap-ui", }, config = function() local dap = require("dap") local dapui = require("dapui") -- Python debugging require("dap-python").setup("python") -- Debug UI dapui.setup() dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() end dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() end dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end -- Debug keybinds vim.keymap.set("n", "<F5>", dap.continue, { desc = "Debug starten/doorgaan" }) vim.keymap.set("n", "<F10>", dap.step_over, { desc = "Stap over" }) vim.keymap.set("n", "<F11>", dap.step_into, { desc = "Stap in" }) vim.keymap.set("n", "<F12>", dap.step_out, { desc = "Stap uit" }) vim.keymap.set("n", "<leader>b", dap.toggle_breakpoint, { desc = "Breakpoint toggle" }) end, } ``` ### 5. Bestandsnavigatie (Telescope) ```lua { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" }, config = function() local telescope = require("telescope") telescope.setup({ defaults = { file_ignore_patterns = { "node_modules", ".git", "venv" }, }, }) -- Telescope keybinds vim.keymap.set("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "Bestanden zoeken" }) vim.keymap.set("n", "<leader>fg", "<cmd>Telescope live_grep<cr>", { desc = "Tekst zoeken" }) vim.keymap.set("n", "<leader>fb", "<cmd>Telescope buffers<cr>", { desc = "Buffers zoeken" }) vim.keymap.set("n", "<leader>fh", "<cmd>Telescope help_tags<cr>", { desc = "Help zoeken" }) end, } ``` ### 6. Syntax Highlighting (Treesitter) ```lua { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", config = function() require("nvim-treesitter.configs").setup({ ensure_installed = { "python", "javascript", "typescript", "html", "css", "json" }, highlight = { enable = true }, indent = { enable = true }, }) end, } ``` ## Aanbevolen Sneltoetsen ```lua -- Persoonlijke keybinds toevoegen vim.keymap.set("n", "<leader>e", vim.cmd.Ex, { desc = "File explorer" }) vim.keymap.set("n", "<C-s>", vim.cmd.w, { desc = "Opslaan" }) vim.keymap.set("n", "<leader>q", vim.cmd.q, { desc = "Sluiten" }) -- Split navigatie vim.keymap.set("n", "<C-h>", "<C-w>h") vim.keymap.set("n", "<C-j>", "<C-w>j") vim.keymap.set("n", "<C-k>", "<C-w>k") vim.keymap.set("n", "<C-l>", "<C-w>l") ``` ## Installatie Stappen 1. **Backup je huidige config:** ```bash mv ~/.config/nvim ~/.config/nvim.backup ``` 2. **Nieuwe config map:** ```bash mkdir -p ~/.config/nvim/lua/plugins ``` 3. **Maak init.lua:** ```bash touch ~/.config/nvim/init.lua ``` 4. **Voeg bovenstaande code toe aan de betreffende bestanden** 5. **Start Neovim en installeer plugins:** ```vim :Lazy sync ``` ## Extra Tips - Gebruik `:Mason` om extra LSP servers te installeren - Voor JavaScript debugging: installeer `node-debug2-adapter` via Mason - Bekijk `:help nvim-dap` voor geavanceerde debugging opties Deze configuratie geeft je een professionele ontwikkelomgeving met alle tools die je nodig hebt voor Python en JavaScript ontwikkeling!