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
tags
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!