Zum Inhalt springen

Neovim als Standard-Editor — Aufbau eines modernen Workflows

Neovim als Standard-Editor — Aufbau eines modernen Workflows

Abschnitt betitelt „Neovim als Standard-Editor — Aufbau eines modernen Workflows“

Heute habe ich Neovim 0.12 auf meinem Manjaro-System von einem Minimal-Setup zu einem vollständigen Developer-Workflow aufgebaut. Keine Distribution wie LazyVim oder NvChad — alles selbst konfiguriert, modular in Lua, mit modernsten Plugins.

Mein init.lua hatte genau drei Zeilen:

vim.o.grepprg = 'rg --vimgrep'
vim.o.grepformat = '%f:%l:%c:%m'

Ripgrep als Suchmaschine — das wars. Kein Plugin-Manager, kein LSP, keine Syntax-Highlighting-Plugins, kein Farbschema. Ein blanker Schlssel.

Interessant: Neovim 0.12.3 ist auf Manjaro aktuell und bringt schon einiges Built-in — Lua-First-Konfiguration, integriertes LSP-Client-Framework, und einen neuen vim.lsp.config API, der das alte lspconfig-Muster ablöst.

Das Fundament: lazy.nvim und modulare Lua-Konfiguration

Abschnitt betitelt „Das Fundament: lazy.nvim und modulare Lua-Konfiguration“

Ich habe mich für lazy.nvim als Plugin-Manager entschieden. Der große Vorteil: Plugins werden nur geladen, wenn sie benötigt werden — ob per Event (BufReadPost), per Tastenkombination, oder beim Start. Das hält die Startup-Zeit niedrig.

Die Konfiguration ist modular in lua/ gegliedert:

~/.config/nvim/lua/
├── core/init.lua # Globale Einstellungen
├── core/keymaps.lua # Tastenkombinationen
├── plugins/ # Plugin-Spezifikationen
└── lsp/init.lua # LSP-Konfiguration

Jedes Plugin ist eine einzelne Lua-Datei, die eine lazy.nvim-Spezifikation zurückgibt. Klar, überschaubar, leicht zu erweitern.

Der klassische Weg — Syntax-Dateien für jedes Filetype — ist tot. Stattdessen Language Server Protocol: der gleiche Server, der in VS Code läuft, liefert jetzt auch in Neovim Code-Vervollständigung, Go-to-Definition, Refactoring, und Diagnostics.

Was mich überrascht hat: Neovim 0.12 hat vim.lsp.config als neuen Weg, LSP-Server zu konfigurieren. Die alte nvim-lspconfig ist jetzt ein Deprecated-“Framework”. So geht es modern:

vim.lsp.config["pyright"] = {
capabilities = capabilities,
on_attach = on_attach,
}
vim.lsp.enable("pyright")

Achtung: Die LSP-Server selbst werden von Neovim nicht mitgeliefert. Ich habe über pacman installiert: pyright, ruff, typescript-language-server, lua-language-server, bash-language-server, yaml-language-server, tailwindcss-language-server, eslint-language-server. Acht Server, acht Sprachen abgedeckt.

Hier gab es eine echte Lernkurve. Das klassische nvim-cmp wird langsam von blink.cmp abgelöst — ein komplett in Rust geschriebener Fuzzy-Matcher, der deutlich schneller ist und Tippfehler toleriert.

Die Installation über lazy.nvim mit einem Release-Tag lädt vorgebaute Binaries — kein Rust-Toolchain nötig:

{
"saghen/blink.cmp",
dependencies = { "rafamadriz/friendly-snippets" },
version = "1.*",
opts = {
keymap = { preset = "default" },
sources = { default = { "lsp", "path", "snippets", "buffer" } },
},
}

Die Erfahrung: Ctrl+Space öffnet das Menü, Ctrl+y akzeptiert. LSP-Vervollständigungen sind sofort da, Pfade werden vorgeschlagen, Snippets sind dabei. Fühlt sich an wie VS Code, nur ohne den Electron-Overhead.

Telescope.nvim ist der File-Finder und Live-Grep von Neovim. Space f f durchsucht alle Dateien im Projekt, Space f g grept live mit ripgrep. Der FZF-Extension bringt noch besseres Ranking.

Was ich mag: Der Preview zeigt den Dateiinhalt rechts neben der Ergebnisliste. Man sieht den Kontext, bevor man die Datei öffnet. Und die ripgrep-Integration ist nahtlos — genau die gleichen Suchen wie auf der Kommandozeile.

Gitsigns zeigt die Git-Changes direkt in der Sign-Spalte — + für hinzugefügt, ~ für geändert, _ für gelöscht. Mit Space g p und Space g n springt man von Hunk zu Hunk. Space g s staged einen Hunk, Space g r resetet ihn.

Alles visuell, alles im Editor. Kein git diff im Terminal mehr nötig.

Einige Dinge, die auf der Liste stehen:

  • telescope-fzf-native für noch besseres Fuzzy-Ranking (Rust-Backend statt Lua)
  • nvim-navic für LSP-basierte Navigation in der Statusleiste
  • oil.nvim als Dateibrowser, der den Dateisystem-Inhalt direkt als Buffer darstellt
  • Eigene Snippets für wiederkehrende Patterns (PHP-Controller, Python-Test-Klassen)
  • mason.nvim für automatisches LSP-Server-Management (statt pacman-Pakete)

Nächstes: Die telescope-Erweiterungen ausprobieren und entscheiden, ob oil.nvim den nvim-tree ersetzen soll — oder ob beides seinen Platz hat.

Ein begleitender Cheat Sheet fasst die wichtigsten Tastenkürzel zusammen: Neovim Cheat Sheet.