slogan3

Ontwerp een Neovim Setup voor Efficiënt Project- en Werkruimtebeheer

description

Deze prompt helpt gebruikers een Neovim-omgeving te creëren die is afgestemd op het efficiënt beheren van meerdere projecten en werkruimtes, waardoor de tijd voor contextwisselingen wordt verminderd en de organisatie verbetert. Het richt zich op project- en sessiebeheer, een aspect dat nog niet door bestaande prompts wordt behandeld, en helpt gebruikers productiever te zijn bij het werken met diverse codebases.

prompt

Help me een Neovim-configuratie te ontwerpen die het beheren van meerdere projecten en werkruimtes vereenvoudigt. Ik wil functies zoals sessiebeheer, snelle projectwisselingen en werkruimteorganisatie afgest ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorstel voor een Neovim-configuratie die gericht is op het beheren van meerdere projecten en werkruimtes, met functies zoals sessiebeheer, snelle projectwisselingen en werkruimteorganisatie, afgestemd op jouw ontwikkelstijl voor webontwikkeling en mobiele app-ontwikkeling. **1. Pluginsuggesties** Gebruik een pluginmanager zoals 'packer.nvim'. Hier is een basisconfiguratie: ```lua require('packer').startup(function(use) -- Plugin voor sessiebeheer use 'rmagatti/auto-session' -- Plugin voor projectbeheer use 'ahmedkhalf/project.nvim' -- Plugin voor werkruimteorganisatie use 'natecraddock/workspaces.nvim' -- Plugin voor snelle projectwisselingen use 'ThePrimeagen/harpoon' -- Fuzzy finder voor snel navigeren use 'nvim-telescope/telescope.nvim' use 'nvim-lua/plenary.nvim' -- Andere handige plugins use 'nvim-lua/popup.nvim' use 'nvim-treesitter/nvim-treesitter' end) ``` **2. Basisinstellingen en configuratie** ```lua -- Auto sessiebeheer require('auto-session').setup{ auto_save_enabled = true, auto_restore_enabled = true, log_level = 'error', -- Opslaan in specifieke map session_dir = vim.fn.stdpath('data').."/sessions", } -- Project.nvim configuratie require("project_nvim").setup{ detection_methods = { "pattern" }, patterns = { ".git", "Makefile", "package.json" }, show_hidden = true, } -- Workspaces.nvim configuratie require("workspaces").setup{ hooks = { open = { -- Automatisch project openen bij werkruimte function(ws) require('project_nvim').change_detection_method('pattern') require('project_nvim').switch_project(ws.name) end } } } ``` **3. Toetscombinaties en snelkoppelingen** ```lua local map = vim.api.nvim_set_keymap local opts = { noremap = true, silent = true } -- Project wisselen met Telescope map('n', '<leader>pf', "<cmd> lua require('telescope').extensions.project.project{}<CR>", opts) -- Sessie opslaan en herstellen map('n', '<leader>ss', '<Cmd>SessionSave<CR>', opts) map('n', '<leader>sr', '<Cmd>SessionRestore<CR>', opts) -- Werkruimte openen/verbergen map('n', '<leader>ww', "<cmd>lua require('workspaces').switch()<CR>", opts) -- Harpoon gebruiken voor snelle navigatie map('n', '<leader>h', "<cmd>lua require('harpoon.ui').toggle_quick_menu()<CR>", opts) map('n', '<leader>1', "<cmd>lua require('harpoon.mark').add_file()<CR>", opts) map('n', '<leader>2', "<cmd>lua require('harpoon.ui').nav_file(1)<CR>", opts) map('n', '<leader>3', "<cmd>lua require('harpoon.ui').nav_file(2)<CR>", opts) ``` **4. Specifieke instellingen voor web- en mobiele ontwikkeling** ```lua -- Syntax highlighting en Treesitter require'nvim-treesitter.configs'.setup { ensure_installed = { "html", "css", "javascript", "typescript", "json", "xml" }, highlight = { enable = true }, } -- Linting en formatteren -- Bijvoorbeeld met null-ls use 'jose-elias-alvarez/null-ls.nvim' require('null-ls').setup{ sources = { require('null-ls').builtins.formatting.prettier, require('null-ls').builtins.diagnostics.eslint, }, } ``` **5. Workflow** - Gebruik `<leader>pf` om snel naar het project te switchen via Telescope. - Sla sessies op met `<leader>ss` en herstel met `<leader>sr`. - Beheer werkruimtes met `<leader>ww`. - Gebruik Harpoon voor snelle navigatie binnen bestanden. **Samenvatting:** Deze setup biedt een uitgebreide basis voor project- en werkruimtebeheer, afgestemd op jouw ontwikkelstijlen. Pas de snelkoppelingen en plugins verder aan op jouw voorkeuren. Veel succes!
provider: deepseek
model: deepseek-chat
Zeker! Hier is een complete Neovim-configuratie afgestemd op project- en werkruimtebeheer voor web- en mobiele app ontwikkeling: ## Kern Plugins Voeg deze toe aan je `plugins.lua` of packer-configuratie: ```lua -- Project management use 'ahmedkhalf/project.nvim' -- Automatische projectdetectie use 'ThePrimeagen/harpoon' -- Snel schakelen tussen belangrijke bestanden use 'mhinz/vim-startify' -- Sessiebeheer en dashboard use 'tpope/vim-obsession' -- Verbeterd sessiebeheer -- Workspace & navigatie use 'christoomey/vim-tmux-navigator' -- Naadloze tmux integratie use 'folke/which-key.nvim' -- Toetscombinatie hulp use 'nvim-tree/nvim-tree.lua' -- File explorer use 'nvim-tree/nvim-web-devicons' -- Icons -- LSP & taalondersteuning use 'neovim/nvim-lspconfig' use 'williamboman/mason.nvim' use 'williamboman/mason-lspconfig.nvim' -- Web development specifiek use 'pangloss/vim-javascript' use 'leafgarland/typescript-vim' use 'maxmellon/vim-jsx-pretty' use 'jparise/vim-graphql' -- Mobile development use 'dart-lang/dart-vim-plugin' use 'thosakwe/vim-flutter' use 'OmniSharp/omnisharp-vim' -- Voor Xamarin/C# ``` ## Configuratie Bestanden ### 1. Project Management (`lua/config/project.lua`) ```lua require("project_nvim").setup({ detection_methods = { "pattern", "lsp" }, patterns = { ".git", "package.json", "pubspec.yaml", "CMakeLists.txt", "Makefile", ".projectroot" }, silent_chdir = false, }) -- Telescope project extension require('telescope').load_extension('projects') ``` ### 2. Harpoon Config (`lua/config/harpoon.lua`) ```lua local harpoon = require("harpoon") harpoon.setup() -- Snel wisselen tussen projecten vim.keymap.set("n", "<leader>pa", function() harpoon:list():append() end, { desc = "Add file to harpoon" }) vim.keymap.set("n", "<leader>pp", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { desc = "Harpoon quick menu" }) -- Snel naar gemarkeerde bestanden for i = 1, 5 do vim.keymap.set("n", "<leader>" .. i, function() harpoon:list():select(i) end, { desc = "Harpoon to file " .. i }) end ``` ### 3. Sessie Management (`lua/config/sessions.lua`) ```lua -- Automatische sessies per project vim.g.startify_session_persistence = 1 vim.g.startify_session_dir = '~/.config/nvim/sessions/' vim.g.startify_change_to_vcs_root = 1 -- Sessie commando's vim.api.nvim_create_user_command("SaveWorkspace", "Obsession", {}) vim.api.nvim_create_user_command("LoadWorkspace", "source Session.vim", {}) ``` ## Toetscombinaties (`lua/config/keymaps.lua`) ```lua local keymap = vim.keymap.set -- Project management keymap("n", "<leader>pp", "<cmd>Telescope projects<CR>", { desc = "Switch projects" }) keymap("n", "<leader>ps", "<cmd>SessionSave<CR>", { desc = "Save session" }) keymap("n", "<leader>pl", "<cmd>SessionLoad<CR>", { desc = "Load session" }) -- Workspace navigation keymap("n", "<C-h>", "<C-w>h", { desc = "Window left" }) keymap("n", "<C-j>", "<C-w>j", { desc = "Window down" }) keymap("n", "<C-k>", "<C-w>k", { desc = "Window up" }) keymap("n", "<C-l>", "<C-w>l", { desc = "Window right" }) -- File tree met project context keymap("n", "<leader>e", "<cmd>NvimTreeFindFileToggle<CR>", { desc = "Toggle file tree" }) -- Snel wisselen tussen laatste bestanden keymap("n", "<leader><leader>", "<c-^>", { desc = "Switch to last buffer" }) ``` ## Workspace-specifieke Setup ### Web Development Autocmds (`lua/config/webdev.lua`) ```lua local webdev_group = vim.api.nvim_create_augroup("WebDev", { clear = true }) vim.api.nvim_create_autocmd({"BufEnter"}, { group = webdev_group, pattern = {"*.js", "*.jsx", "*.ts", "*.tsx", "*.vue", "*.svelte"}, callback = function() -- Web development specifieke instellingen vim.bo.tabstop = 2 vim.bo.shiftwidth = 2 vim.bo.expandtab = true end }) ``` ### Mobile Development Autocmds (`lua/config/mobiledev.lua`) ```lua local mobile_group = vim.api.nvim_create_augroup("MobileDev", { clear = true }) -- Flutter/Dart projecten vim.api.nvim_create_autocmd({"BufEnter"}, { group = mobile_group, pattern = {"pubspec.yaml", "*.dart"}, callback = function() vim.bo.tabstop = 2 vim.bo.shiftwidth = 2 vim.bo.expandtab = true -- Auto start Flutter daemon in Flutter projecten if vim.fn.filereadable("pubspec.yaml") == 1 then vim.fn.jobstart("flutter daemon") end end }) ``` ## Init.lua Structuur ```lua -- Basis instellingen require('config.settings') require('config.keymaps') -- Plugin management require('plugins') -- LSP configuratie require('config.lsp') -- Project management require('config.project') require('config.harpoon') require('config.sessions') -- Workspace-specifieke configs require('config.webdev') require('config.mobiledev') -- UI enhancements require('config.ui') ``` ## Gebruiksaanwijzing ### Snel starten: 1. `:Telescope projects` - Selecteer en open project 2. `<leader>pa` - Voeg belangrijk bestand toe aan Harpoon 3. `<leader>1-5` - Spring naar gemarkeerde bestanden 4. `<leader>ps`/`<leader>pl` - Sessie opslaan/laden ### Workflow: - Start Neovim in project root - Gebruik Harpoon voor kernbestanden per project - Sla werkruimte op wanneer je wisselt - Gebruik project.nvim voor automatische detectie Deze setup biedt een naadloze ervaring voor het managen van meerdere web- en mobiele projecten met snelle contextwisselingen en gepersonaliseerde werkruimtes!