LazyVim – Neovim mit fertiger IDE-Konfiguration
LazyVim von Folke Lemaitre ist keine eigene Software, sondern eine Neovim-Konfiguration auf Basis des Plugin-Managers lazy.nvim. Alles Vim-Wissen gilt weiter – dazu kommen Dateisuche, Git, LSP, Autovervollständigung und ein Menü hinter der Leertaste (dem Leader). Und alles bleibt Lua-Code, den du überschreiben kannst.
📂 Aufbau der Konfiguration
~/.config/nvim
├── init.lua ← lädt nur require("config.lazy")
├── lazy-lock.json ← exakte Plugin-Versionen (von lazy.nvim geschrieben)
├── lazyvim.json ← aktivierte Extras (von :LazyExtras geschrieben)
└── lua
├── config
│ ├── lazy.lua ← installiert lazy.nvim und ruft setup() auf
│ ├── options.lua ← vim.opt … geladen VOR dem Start von lazy.nvim
│ ├── keymaps.lua ← eigene Tasten, geladen beim Event VeryLazy
│ └── autocmds.lua ← eigene Autocommands, geladen bei VeryLazy
└── plugins
├── example.lua ← jede Datei gibt eine Liste von Plugin-Specs zurück
└── … ← alles hier wird automatisch importiert🚀 Was beim Start passiert
- 1nvimNeovim startet und liest ~/.config/nvim/init.lua
- 2require("config.lazy")lädt lua/config/lazy.lua – installiert lazy.nvim bei Bedarf per git clone
- 3options.luaLazyVim-Optionen, danach deine – noch bevor Plugins starten
- 4require("lazy").setup()liest alle Specs: LazyVim-Plugins, Extras, lua/plugins/*.lua
- 5Plugins ladennur was sofort nötig ist; der Rest wartet auf Event, Befehl, Dateityp oder Taste
- 6VeryLazynach dem Start: keymaps.lua und autocmds.lua (erst LazyVims, dann deine)
-- lua/config/lazy.lua (Auszug aus dem Starter)
require("lazy").setup({
spec = {
-- LazyVim selbst und seine Plugins importieren
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- eigene Plugins aus lua/plugins/ importieren bzw. überschreiben
{ import = "plugins" },
},
})-- lua/plugins/meine.lua
return {
-- Plugin hinzufügen (wird über das Kommando geladen)
{ "tpope/vim-fugitive", cmd = "Git" },
-- Optionen eines LazyVim-Plugins ändern
{ "folke/tokyonight.nvim", opts = { style = "night" } },
-- Plugin abschalten
{ "folke/flash.nvim", enabled = false },
}-- lua/config/options.lua
vim.opt.relativenumber = false -- LazyVim schaltet relative Nummern ein
vim.opt.wrap = true
-- lua/config/keymaps.lua
vim.keymap.set("n", "<leader>wq", "<cmd>wq<cr>", { desc = "Speichern und schließen" })
-- QWERTZ-Komfort: ö und ä als [ und ]
vim.keymap.set({ "n", "x", "o" }, "ö", "[", { remap = true })
vim.keymap.set({ "n", "x", "o" }, "ä", "]", { remap = true })🧩 Die wichtigsten Plugins und ihre Tasten
Der Plugin-Manager: installiert, aktualisiert und lädt Plugins erst bei Bedarf (Event, Befehl, Dateityp oder Taste). Hält die Versionen in lazy-lock.json fest.
- <leader>lLazy-Oberfläche öffnen
Sammlung kleiner Helfer: Picker (Dateien, Grep, Buffer, Hilfe …), Datei-Explorer, Dashboard, Benachrichtigungen, Terminal, Lazygit-Fenster, Scratch-Buffer.
- <leader><space>Dateien finden (Root Dir)
- <leader>/Grep im Projekt
- <leader>,Buffer-Liste
- <leader>eExplorer
- <leader>frzuletzt geöffnet
- <leader>ggLazygit (wenn installiert)
- <C-/>Terminal
Zeigt nach einer angefangenen Tastenfolge (z. B. <leader>) ein Menü mit allen Möglichkeiten – die eingebaute Hilfe von LazyVim.
- <leader>?Belegungen des Buffers
- <C-w><space>Fenster-Hydra
Springen per Suchbeschriftung: s tippen, ein paar Buchstaben des Ziels, dann den angezeigten Sprungbuchstaben. Ersetzt in LazyVim das s von Vim.
- sFlash-Sprung
- SFlash Treesitter
- r (nach Operator)Remote Flash
- <c-s> (bei /)Flash in der Suche umschalten
Git-Änderungen am Rand, Hunks stagen/zurücksetzen, Blame pro Zeile.
- ]h / [hnächster/voriger Hunk
- <leader>ghsHunk stagen
- <leader>ghrHunk zurücksetzen
- <leader>ghpHunk-Vorschau
- ihTextobjekt „Hunk“
Übersichtliche Listen für Diagnosen, Quickfix, Symbole und LSP-Referenzen.
- <leader>xxDiagnosen
- <leader>csSymbole
- ]q / [qnächster/voriger Eintrag
Hebt TODO, FIX, HACK, NOTE … hervor und listet sie projektweit.
- ]t / [tnächster/voriger TODO
- <leader>stTODOs suchen
Suchen und Ersetzen über das ganze Projekt (ripgrep) in einem eigenen Buffer.
- <leader>srSearch and Replace
Erweitert die a/i-Textobjekte: o (Block), f (Funktion), c (Klasse), t (Tag), d (Ziffern), e (Wortteil in camelCase), g (ganzer Buffer), u/U (Funktionsaufruf). Findet auch das nächste Objekt, wenn der Cursor davor steht.
- vaf / difFunktion markieren / Inhalt löschen
- cicKlasseninhalt ändern
- yigganzen Buffer kopieren
Schließt Klammern und Anführungszeichen automatisch (im Einfüge- und Befehlszeilenmodus).
- ( [ { " 'Gegenstück wird ergänzt
Ergänzt Neovims eingebautes Kommentieren (gc/gcc) um die richtige Kommentarsyntax je Treesitter-Sprache.
- gccZeile (aus)kommentieren
- gc{Bewegung}Bereich kommentieren
- gco / gcOKommentar darunter/darüber
Autovervollständigung (LSP, Pfade, Snippets, Buffer) – die Standard-Vervollständigung in aktuellen LazyVim-Versionen.
- <C-space>Menü öffnen
- <CR>Vorschlag übernehmen
- <C-n> / <C-p>nächster / voriger Vorschlag
Verbindet Neovims LSP-Client mit Sprachservern: Definitionen, Referenzen, Umbenennen, Code-Aktionen, Diagnosen.
- gdDefinition
- grReferenzen
- KHover-Doku
- <leader>caCode Action
- <leader>crUmbenennen
Installiert Sprachserver, Formatierer und Linter bequem aus Neovim heraus.
- <leader>cmMason öffnen
Formatiert beim Speichern mit dem passenden Formatierer (prettier, stylua, black …).
- <leader>cfFormatieren
- <leader>ufAutoformat an/aus
Startet Linter asynchron und zeigt die Meldungen als Diagnosen.
- ]d / [dnächste/vorige Diagnose
Syntaxbaum statt regulärer Ausdrücke: genaues Highlighting, Einrückung, Textobjekte.
- <c-space>Auswahl schrittweise vergrößern (über flash)
Offene Buffer als Reiter am oberen Rand.
- <S-h> / <S-l>voriger / nächster Buffer
- <leader>bpanheften
- <leader>bdBuffer schließen
Farbige Statuszeile mit Modus, Git-Zweig, Diagnosen und Position.
Moderne Befehlszeile und Meldungen als schwebende Fenster.
- <leader>snhMeldungsverlauf
- <leader>sndalle ausblenden
Speichert Sitzungen (offene Dateien, Fenster) automatisch pro Verzeichnis.
- <leader>qsSitzung wiederherstellen
- <leader>qlletzte Sitzung
Das Standard-Farbschema (Catppuccin ist ebenfalls vorinstalliert).
- <leader>uCFarbschema wählen
⌨️ Alle Standard-Belegungen
| Taste | Wirkung | Gruppe |
|---|---|---|
| <leader><space> | Find Files (Root Dir) – Dateisuche im Projekt | Leader direkt |
| <leader>, | Buffers – offene Buffer auflisten | Leader direkt |
| <leader>. | Toggle Scratch Buffer – Notizzettel | Leader direkt |
| <leader>/ | Grep (Root Dir) – Text im ganzen Projekt suchen | Leader direkt |
| <leader>: | Command History – letzte :-Befehle | Leader direkt |
| <leader>- | Split Window Below – Fenster horizontal teilen | Leader direkt |
| <leader>| | Split Window Right – Fenster vertikal teilen | Leader direkt |
| <leader>` | Switch to Other Buffer – zum vorigen Buffer | Leader direkt |
| <leader>? | Buffer Keymaps (which-key) – alle Belegungen des Buffers | Leader direkt |
| <leader>e | Explorer Snacks (root dir) – Dateibaum | Leader direkt |
| <leader>E | Explorer Snacks (cwd) | Leader direkt |
| <leader>l | Lazy – Plugin-Manager lazy.nvim öffnen | Leader direkt |
| <leader>L | LazyVim Changelog | Leader direkt |
| <leader>n | Notification History | Leader direkt |
| <leader>K | Keywordprg – wie K in Vim | Leader direkt |
| <leader>S | Select Scratch Buffer | Leader direkt |
| <leader>ff | Find Files (Root Dir) | +file/find |
| <leader>fF | Find Files (cwd) | +file/find |
| <leader>fr | Recent – zuletzt geöffnete Dateien | +file/find |
| <leader>fb | Buffers | +file/find |
| <leader>fc | Find Config File | +file/find |
| <leader>fg | Find Files (git-files) | +file/find |
| <leader>fn | New File | +file/find |
| <leader>fe | Explorer (root dir) | +file/find |
| <leader>ft | Terminal (Root Dir) | +file/find |
| <leader>fT | Terminal (cwd) | +file/find |
| <leader>fp | Projects | +file/find |
| <leader>gg | Lazygit (Root Dir) – nur wenn lazygit installiert ist | +git |
| <leader>gG | Lazygit (cwd) | +git |
| <leader>gs | Git Status | +git |
| <leader>gl | Git Log | +git |
| <leader>gL | Git Log (cwd) | +git |
| <leader>gb | Git Blame Line | +git |
| <leader>gf | Git Current File History | +git |
| <leader>gd | Git Diff (hunks) | +git |
| <leader>gB | Git Browse (open) | +git |
| <leader>ghs | Stage Hunk (gitsigns) | +git |
| <leader>ghr | Reset Hunk (gitsigns) | +git |
| <leader>ghp | Preview Hunk Inline (gitsigns) | +git |
| <leader>ghb | Blame Line (gitsigns) | +git |
| <leader>sg | Grep (Root Dir) | +search |
| <leader>sw | Visual selection or word (Root Dir) | +search |
| <leader>sk | Keymaps | +search |
| <leader>sh | Help Pages | +search |
| <leader>sd | Diagnostics | +search |
| <leader>ss | LSP Symbols | +search |
| <leader>sr | Search and Replace (grug-far) | +search |
| <leader>s" | Registers | +search |
| <leader>sm | Marks | +search |
| <leader>sR | Resume | +search |
| <leader>st | Todo (todo-comments) | +search |
| <leader>su | Undotree | +search |
| <leader>sb | Buffer Lines | +search |
| <leader>ca | Code Action | +code |
| <leader>cr | Rename | +code |
| <leader>cR | Rename File | +code |
| <leader>cf | Format | +code |
| <leader>cd | Line Diagnostics | +code |
| <leader>cl | Lsp Info | +code |
| <leader>cm | Mason | +code |
| <leader>cs | Symbols (Trouble) | +code |
| <leader>co | Organize Imports | +code |
| <leader>bb | Switch to Other Buffer | +buffer |
| <leader>bd | Delete Buffer | +buffer |
| <leader>bo | Delete Other Buffers | +buffer |
| <leader>bD | Delete Buffer and Window | +buffer |
| <leader>bp | Toggle Pin (bufferline) | +buffer |
| <leader>bj | Pick Buffer (bufferline) | +buffer |
| <leader>uf | Toggle Auto Format (Global) | +ui |
| <leader>us | Toggle Spelling | +ui |
| <leader>uw | Toggle Wrap | +ui |
| <leader>ul | Toggle Line Numbers | +ui |
| <leader>uL | Toggle Relative Number | +ui |
| <leader>ud | Toggle Diagnostics | +ui |
| <leader>uh | Toggle Inlay Hints | +ui |
| <leader>uC | Colorschemes | +ui |
| <leader>uz | Toggle Zen Mode | +ui |
| <leader>xx | Diagnostics (Trouble) | +diagnostics |
| <leader>xX | Buffer Diagnostics (Trouble) | +diagnostics |
| <leader>xl | Location List | +diagnostics |
| <leader>xq | Quickfix List | +diagnostics |
| <leader>xt | Todo (Trouble) | +diagnostics |
| <leader>qq | Quit All | +quit/session |
| <leader>qs | Restore Session (persistence) | +quit/session |
| <leader>ql | Restore Last Session | +quit/session |
| <leader>qd | Don't Save Current Session | +quit/session |
| <leader>wd | Delete Window | +windows |
| <leader>wm | Toggle Zoom Mode | +windows |
| gd / gr / gI / gy / gD | LSP: Definition, Referenzen, Implementierung, Typdefinition, Deklaration | ohne Leader |
| K | LSP-Hover (Dokumentation) | ohne Leader |
| gK · <C-k> (Einfügen) | Signature Help | ohne Leader |
| s / S | Flash: Sprung / Treesitter-Auswahl (flash.nvim) | ohne Leader |
| <S-h> / <S-l> · [b / ]b | vorheriger / nächster Buffer (bufferline.nvim) | ohne Leader |
| <C-h/j/k/l> | zum Fenster links/unten/oben/rechts | ohne Leader |
| <A-j> / <A-k> | Zeile(n) nach unten/oben verschieben | ohne Leader |
| <C-s> | Datei speichern (auch im Einfügemodus) | ohne Leader |
| ]d [d · ]e [e · ]w [w | nächste/vorige Diagnose · Fehler · Warnung | ohne Leader |
| ]h [h | nächster/voriger Git-Hunk (gitsigns.nvim) | ohne Leader |
| ]t [t | nächster/voriger TODO-Kommentar (todo-comments.nvim) | ohne Leader |
| ]] [[ | nächste/vorige Referenz des Symbols | ohne Leader |
| gco / gcO | Kommentarzeile darunter/darüber einfügen | ohne Leader |
| <C-/> | Terminal (Root Dir) ein-/ausblenden (snacks.nvim) | ohne Leader |
| <Esc> | zusätzlich: Suchhervorhebung löschen | ohne Leader |
Quelle: lazyvim.org/keymaps und die Plugin-Specs von LazyVim (abgerufen am 24.09.2026). Nur Standardbelegungen; Extras bringen weitere mit. In Neovim zeigt ␣ s k (Keymaps-Picker) die tatsächlich aktiven Belegungen.
🧾 Voraussetzungen
| Neovim ≥ 0.11.2 | mit LuaJIT gebaut |
| Git ≥ 2.19.0 | für partielle Klone |
| Nerd Font (v3.0+) | optional, für Icons |
| lazygit | optional, für <leader>gg |
| tree-sitter-cli + C-Compiler | für nvim-treesitter |
| curl | für die Vervollständigung |
| fzf (≥ 0.25.1), ripgrep, fd | für die Picker |
| Terminal mit True Color + Undercurl | z. B. kitty, wezterm, alacritty, iTerm2, ghostty |
Quelle: lazyvim.org · macOS z. B. brew install neovim git lazygit ripgrep fd fzf
🛠️ Installation (Linux/macOS)
# 1) Bestehende Konfiguration sichern (falls vorhanden)
mv ~/.config/nvim{,.bak}
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}
# 2) Starter-Vorlage holen
git clone https://github.com/LazyVim/starter ~/.config/nvim
# 3) .git entfernen – die Konfiguration gehört jetzt dir
rm -rf ~/.config/nvim/.git
# 4) Neovim starten – lazy.nvim installiert alle Plugins
nvim
# 5) In Neovim prüfen, ob alles läuft
:LazyHealthLaut lazyvim.org/installation. Danach: ␣ abwarten – which-key zeigt das Menü. :Lazy verwaltet Plugins, :LazyExtras die Extras, :Mason die Sprachserver.