Skip to content

Repository files navigation

DeutschEnglishРусский

Neovim-Setup für die C/C++-Entwicklung

Version

Dieses Repository enthält eine optimierte Neovim-Konfiguration für die C/C++-Entwicklung mit leistungsstarken Plugins für Autovervollständigung, Syntaxhervorhebung, Git-Integration und mehr. Das Setup ist bewusst schlank gehalten – schnell startklar, fokussiert auf das Wesentliche und lässt sich leicht an deine eigenen Bedürfnisse anpassen.

Zusammen mit meinen anderen Projekten vhstack/tmuxpp und vhstack/termpp bildet es eine perfekt abgestimmte Arbeitsumgebung, die dir eine nahtlose und effiziente Nutzung von Terminal, Tmux und Neovim ermöglicht. Die Komplettinstallation des gesamten Stacks übernimmt ein einziger Befehl im vhstack-Repository.

Screenshot

Screenshot

Screenshot

🚀 Features

  • LSP-Unterstützung für C/C++ mit automatischer Vervollständigung
  • Syntax-Highlighting mit Treesitter
  • Git-Integration direkt in Neovim
  • Erweiterte Datei-Navigation mit Telescope und NeoTree
  • Terminal-Integration für reibungslose Entwicklungsabläufe

📦 Installierte Plugins

PluginBeschreibung
telescopeErweiterte Fuzzy-Suche und Datei-Navigation
lspLanguage Server Protocol (LSP) für C/C++-Unterstützung
masonEinfaches Management von LSP-Servern, Debuggern und Lintern
cmpAuto-Completion-Engine für besseren Code-Workflow
conformUnterstützung für Code-Formatierung
lualineAnpassbare Statusleiste für Neovim
gitsignsGit-Integration mit Inline-Diff-Anzeige
treesitterVerbesserte Syntaxhervorhebung für C/C++
toggletermIntegriertes Terminal in Neovim
outlineAnzeige der Symbolstruktur (z. B. Klassen, Funktionen)
autopairsAutomatische Klammer- und Anführungszeichen-Paare
commentsEinfaches Kommentieren von Codeblöcken
ansiDarstellung farbiger ANSI-Sequenzen
colorizerFarbliche Hervorhebung von Farbcodes (z. B. #RRGGBB)
bufflineErweiterte Buffer-Navigation
blanklineVisuelle Darstellung von Einrückungen
neotreeDateimanager für verbesserte Navigation
neogenDokumentations-Generator im Quelltext
dashboardStartbildschirm für Neovim mit Schnellzugriff
whichkeySchnelle Anzeige von Tastenkombinationen
transparentTransparenz-Modus für das Farbschema

🎨 Themen

Installierte Farbthemen:

  • kanagawa
  • onedark
  • glowbeam
  • catppuccin (catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha)

Standard-Theme:
Das catppuccin-Farbschema ist standardmäßig aktiviert; die Transparenz ist standardmäßig deaktiviert (vim.g.is_transparency_enabled = false).

Option für helle Themes:
Fans von hellen Themes können nutzen: catppuccin-latte (Variante von catppuccin) oder weitere Themes installieren.

📥 Installation

  1. Neovim installieren – benötigt wird Neovim ≥ 0.10 (0.11+ wird automatisch erkannt und genutzt)
  2. Tool rg (Ripgrep) installieren
  3. Für LSP clangd installieren
  4. Repository klonen & Git-Verzeichnis entfernen:
    git clone --depth 1 https://github.com/vhstack/nvimpp ~/.config/nvim
    rm -rf ~/.config/nvim/.git ~/.config/nvim/assets ~/.config/nvim/README*.md
  5. Plugins synchronisieren – beim ersten Start von Neovim installiert lazy.nvim alle Plugins automatisch
  6. LSPs & Tools installieren über Mason (:Mason in Neovim ausführen)
# Optional: Um clangd zu installieren, öffne Neovim und führe folgenden Befehl aus:
:MasonInstall clangd cmake-language-server

🖥️ Terminal-Schriftart

Es wird empfohlen, einen Nerd Font zu installieren, um eine optimale Darstellung von Symbolen und Glyphen im Terminal zu gewährleisten.

Nerd Fonts sind unter nerdfonts.com verfügbar.

Gute Schriftarten fürs Coden sind: Cascadia, FiraCode, DejaVuSansM, Cousine

🛠 Benutzerdefinierte Konfiguration

Das Verzeichnis ~/.config/nvim/lua/custom wird mit zwei Beispielskripten ausgeliefert, die dir helfen, eigene Konfigurationsanpassungen vorzunehmen – ohne die Hauptkonfiguration zu verändern:

Wenn du die benutzerdefinierte Konfiguration verwenden willst, benenne die Vorlagendateien um:

mv ~/.config/nvim/lua/custom/_preload.lua ~/.config/nvim/lua/custom/preload.lua
mv ~/.config/nvim/lua/custom/_postload.lua ~/.config/nvim/lua/custom/postload.lua

Durch die Anpassung dieser Dateien kannst du eigene Erweiterungen wie Keybindings, Plugins oder Lua-Code ergänzen, ohne Änderungen an der Hauptkonfiguration vornehmen zu müssen – auch bei zukünftigen Aktualisierungen bleibt deine Konfiguration erhalten.

📜 lua/custom/preload.lua

  • Wird beim Starten von Neovim geladen.
  • Hier kannst du globale Variablen setzen, Umgebungsvariablen definieren oder grundlegende Initialisierungen vornehmen.
  • Beispiel: LSP-Flag setzen, Themes laden, globale Optionen anpassen.

Folgende Variablen können im preload.lua angepasst werden:

VariableBeschreibungStandardwert
vim.g.colorschemeSetzt das Farbschema von Neovim'catppuccin'
vim.g.is_transparency_enabledAktiviert/deaktiviert die Transparenzfalse
vim.g.is_lsp_enabledAktiviert/deaktiviert LSP-Funktionentrue
vim.g.is_git_enabledAktiviert/deaktiviert Git-Funktionen.true

📜 lua/custom/postload.lua

  • Wird nach dem Laden der Hauptkonfiguration geladen.
  • Ideal für Keymaps, UI-Anpassungen und Feintuning nach der initialen Konfiguration.
  • Beispiel: Keymap-Änderungen, Farben, Statusline-Anpassungen.

⌨️ Grundlegende Tastenkombinationen

Dies ist eine Übersicht der wichtigsten Tastenkombinationen, die in meiner Neovim-Konfiguration definiert sind. Die Tasten sind als Lua-Key-Mappings konfiguriert und decken eine Vielzahl von Funktionen ab, von der Navigation bis hin zu spezifischen Plugins. Diese Übersicht hilft dir, schnell die wichtigsten Befehle zu finden und zu nutzen.

Globale Leader Taste

KürzelBedeutung
<Space>Leader Taste

F-Tasten

KürzelBedeutung
<F2>Nach Wort unter dem Cursor suchen
<F5>Neogen-Dokumentation generieren
<F8>ANSI-Farbdarstellung umschalten
<F9>,<leader>mmake ausführen
<F10>make clean & make -j3 ausführen
<F12>Buffer schließen

Navigation

KürzelBedeutung
<C-k>Fenster nach oben
<C-j>Fenster nach unten
<C-h>Fenster nach links
<C-l>Fenster nach rechts
<C-w>Fenster wechseln

NeoTree

KürzelBedeutung
<leader>e, <C-e>NeoTree links an-/ausschalten
<leader>ENeoTree als Float anzeigen
<leader>gsGit-Status in NeoTree

Telescope

KürzelBedeutung
<leader><leader>Zuletzt geöffnete Dateien
<leader>ff, <C-f>Dateien suchen
<leader>fw, F2Wort unter dem Cursor suchen
<leader>fg, <C-g>Live-Grep-Suche
<leader>fb, <C-b>Geöffnete Buffer
<leader>fhHilfetags durchsuchen

Git (Telescope)

KürzelBedeutung
<leader>gbGit-Branches
<leader>gcGit-Commits
<leader>gdGit-Status (Telescope)

Kommentare

KürzelBedeutung
<leader>/Kommentar umschalten

Splits

KürzelBedeutung
|Vertikaler Split
\Horizontaler Split

Tabs

KürzelBedeutung
<Tab>, <C-right>Nächsten Tab wechseln
<S-Tab>, <C-left>Vorherigen Tab wechseln
<C-S-right>Tab nach rechts verschieben
<C-S-left>Tab nach links verschieben

Terminal

KürzelBedeutung
<leader>ttTerminal (Float)
<leader>thTerminal (Horizontal)
<leader>tvTerminal (Vertikal)

LSP

KürzelBedeutung
<leader>lx, <C-x>Diagnostik mit Telescope
<leader>lXDiagnostik als Float
[d, öZur vorherigen Diagnose
]d, äZur nächsten Diagnose
<leader>laCode-Aktionen
<leader>ld, gd, <C-p>Zur Definition springen
<leader>lD, gDZur Deklaration springen
<leader>lk, <S-k>Hover-Dokumentation
<leader>lr, grReferenzen anzeigen
<leader>lt, gt, <C-t>Typdefinition anzeigen
<leader>lRUmbenennen
<leader>lFFormatieren
<leader>lpcompile_commands erzeugen
giImplementierung anzeigen
gxDiagnose-Liste anzeigen
<C-o>Zurück springen

Sonstige

KürzelBedeutung
YGanze Zeile kopieren
uRückgängig machen
UWiederherstellen
+Zahl inkrementieren
-Zahl dekrementieren
<leader>nZeilennummern umschalten
<leader>wDatei speichern
<leader>xBuffer schließen
<leader>sBuffer nach Tabs sortieren
<leader>hWort oder Auswahl farblich markieren
<leader>HAlle Markierungen zurücksetzen
<leader>TTransparenz umschalten
<leader>plLazy Plugins öffnen
<leader>pmMason Plugins öffnen
<C-s>Symbolübersicht (Outline) umschalten
g-Zwischen Änderungen springen

🎯 Schlusswort

Wenn du Ideen für neue Features hast oder das Projekt verbessern möchtest, dann fühl dich frei, es nach deinen Vorstellungen weiterzuentwickeln! Viel Spaß und viel Erfolg beim Programmieren mit nvimpp! 💻🚀