No description
Find a file
Kenthanar 98eb0faa12 Update
2026-03-30 10:18:07 +02:00
lua Update 2026-03-30 10:18:07 +02:00
spell refactoring Spell 2026-03-10 08:58:22 +01:00
.gitignore Initial commit 2026-03-09 21:39:42 +01:00
init.lua refactor init.lua 2026-03-13 08:43:17 +01:00
lazy-lock.json Update 2026-03-30 10:18:07 +02:00
lazyvim.json update 2026-03-17 22:34:50 +01:00
LICENSE Initial commit 2026-03-09 21:39:42 +01:00
README.md update Readme.md 2026-03-12 07:28:35 +01:00

NeoVim Installationsanleitung

Setup-Anleitung für Windows und Linux basierend auf der Konfiguration aus: https://git.dim-m.de/Kenthanar/nvim.git


Inhaltsverzeichnis

  1. Überblick über die Konfiguration
  2. Voraussetzungen
  3. Windows Installation
  4. Linux Installation
  5. Konfiguration klonen
  6. Plattformspezifische Anpassungen
  7. Erster Start & Verifikation
  8. Tastaturbefehle Übersicht

Überblick

Die Konfiguration basiert auf LazyVim und enthält folgende Plugins und Features:

Bereich Plugin / Feature
Plugin Manager lazy.nvim (über LazyVim)
Colorscheme kanagawa-paper
Startbildschirm snacks.nvim Dashboard + alpha-nvim
Dateibaum neo-tree.nvim
LSP C# / Razor seblyng/roslyn.nvim + html-lsp
LSP allgemein nvim-lspconfig + Mason
Syntax nvim-treesitter + Textobjects + Context
Git gitsigns.nvim + kdheepak/lazygit.nvim
Autopaare nvim-autopairs
Statusleiste lualine.nvim
Linting nvim-lint (selene, shellcheck, hadolint, yamllint, …)
Notizen obsidian.nvim (Vaults auf F:/Obsidian/)
Markdown render-markdown.nvim
Keybinding-Hilfe which-key.nvim
Rechtschreibung Eingebaut (de + en_us, Dateien im Repo enthalten)

Voraussetzungen

Tool Zweck Mindestversion
NeoVim Editor >= 0.10
Git Repo klonen, Plugin-Manager beliebig
Node.js LTS LSP-Server (HTML, CSS, YAML, …) >= 18
.NET SDK Roslyn C# LSP >= 8.0
GCC / Make Treesitter-Parser kompilieren beliebig
LazyGit Git-TUI beliebig
ripgrep Telescope Volltext-Suche beliebig
fd Telescope Datei-Suche beliebig
Nerd Font Icons in UI-Elementen beliebig

Windows

1. Nerd Font installieren

Eine Nerd Font ist zwingend erforderlich, damit Icons in neo-tree, lualine und dem Dashboard korrekt angezeigt werden.

  1. nerdfonts.com/font-downloads aufrufen
  2. Eine Font herunterladen, z.B. JetBrainsMono Nerd Font
  3. ZIP entpacken, alle .ttf-Dateien markieren, Rechtsklick, Für alle Benutzer installieren
  4. Im verwendeten Terminal (z.B. Windows Terminal) die neue Font unter Einstellungen → Profil → Darstellung → Schriftart einstellen

2. Abhängigkeiten via winget installieren

PowerShell als Administrator öffnen:

# NeoVim
winget install Neovim.Neovim

# Git
winget install Git.Git

# Node.js LTS
winget install OpenJS.NodeJS.LTS

# ripgrep (Telescope Grep)
winget install BurntSushi.ripgrep.MSVC

# fd (Telescope Dateisuche)
winget install sharkdp.fd

# LazyGit
winget install JesseDuffield.lazygit

PowerShell danach neu starten, damit alle PATH-Einträge geladen sind.

3. .NET SDK installieren

winget install Microsoft.DotNet.SDK.8

4. MSYS2 + GCC (für Treesitter-Parser)

Treesitter-Parser müssen auf Windows nativ kompiliert werden und benötigen einen C-Compiler.

winget install MSYS2.MSYS2

Nach der Installation MSYS2 UCRT64 öffnen (nicht die normale MSYS2-Shell) und ausführen:

pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-make

GCC zum Windows-PATH hinzufügen (PowerShell als Admin):

[System.Environment]::SetEnvironmentVariable(
  "PATH",
  [System.Environment]::GetEnvironmentVariable("PATH", "Machine") + ";C:\msys64\ucrt64\bin",
  "Machine"
)

PowerShell erneut neu starten und prüfen:

gcc --version

5. tree-sitter-cli installieren

npm install -g tree-sitter-cli

Linux

1. Nerd Font installieren (Linux)

mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
unzip JetBrainsMono.zip -d JetBrainsMono
fc-cache -fv

Danach im Terminal die neue Font auswählen.

2. Abhängigkeiten installieren

Ubuntu / Debian:

sudo apt update && sudo apt install -y \
  git gcc make curl unzip \
  nodejs npm \
  ripgrep fd-find

# fd hat auf Ubuntu einen anderen Binary-Namen
mkdir -p ~/.local/bin
ln -sf $(which fdfind) ~/.local/bin/fd

Arch Linux:

sudo pacman -S neovim git gcc make nodejs npm ripgrep fd lazygit

Fedora:

sudo dnf install -y neovim git gcc make nodejs npm ripgrep fd-find

3. NeoVim (aktuelle Version)

Paketquellen enthalten oft veraltete NeoVim-Versionen. Empfohlen wird das offizielle Release:

curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage
chmod +x nvim-linux-x86_64.appimage
sudo mv nvim-linux-x86_64.appimage /usr/local/bin/nvim

NeoVim-Version prüfen (muss >= 0.10 sein):

nvim --version

4. LazyGit installieren

LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" \
  | grep '"tag_name":' | sed -E 's/.*"v*([^"]+)".*/\1/')
curl -Lo lazygit.tar.gz \
  "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
rm lazygit lazygit.tar.gz

5. .NET SDK installieren

# Ubuntu 22.04
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update && sudo apt install -y dotnet-sdk-8.0
rm packages-microsoft-prod.deb

Für andere Distributionen: https://learn.microsoft.com/de-de/dotnet/core/install/linux


Konfiguration klonen

Windows (Konfig)

# Eventuell vorhandene Konfiguration sichern
$nvimConfig = "$env:LOCALAPPDATA\nvim"
$nvimData   = "$env:LOCALAPPDATA\nvim-data"
if (Test-Path $nvimConfig) { Rename-Item $nvimConfig "$nvimConfig.bak" }
if (Test-Path $nvimData)   { Rename-Item $nvimData   "$nvimData.bak"   }

# Repo klonen
git clone https://git.dim-m.de/Kenthanar/nvim.git "$env:LOCALAPPDATA\nvim"

Linux (Konfig)

# Eventuell vorhandene Konfiguration sichern
[ -d ~/.config/nvim ]       && mv ~/.config/nvim       ~/.config/nvim.bak
[ -d ~/.local/share/nvim ]  && mv ~/.local/share/nvim  ~/.local/share/nvim.bak
[ -d ~/.local/state/nvim ]  && mv ~/.local/state/nvim  ~/.local/state/nvim.bak

# Repo klonen
git clone https://git.dim-m.de/Kenthanar/nvim.git ~/.config/nvim

Plattformspezifische Anpassungen

Nach dem Klonen müssen auf Linux einige Einstellungen angepasst werden, da die Konfiguration primär für Windows entwickelt wurde.

Clipboard (Linux)

In lua/config/options.lua ist gesetzt:

opt.clipboard:append("unnamedplus")

unnamedplus funktioniert auf Linux nur, wenn ein Clipboard-Tool installiert ist:

# X11
sudo apt install xclip
# oder
sudo apt install xsel

# Wayland
sudo apt install wl-clipboard

Obsidian Vault-Pfade (Linux)

In lua/plugins/obsidian.lua sind Windows-Pfade hinterlegt:

path = "F:/Obsidian/Personal notes",
path = "F:/Obsidian/Arbeit",

Diese müssen auf die tatsächlichen Linux-Pfade geändert werden:

path = "~/Obsidian/Personal notes",
path = "~/Obsidian/Arbeit",

Obsidian URL-Öffner (Linux)

In lua/plugins/obsidian.lua ist der Windows-Opener konfiguriert:

open = {
  func = function(uri)
    vim.ui.open(uri, { cmd = { "cmd", "/c", "start", "", uri } })
  end,
},

Für Linux ersetzen durch:

open = {
  func = function(uri)
    vim.ui.open(uri)  -- verwendet xdg-open automatisch
  end,
},

Undo-Verzeichnis

Die Konfiguration erstellt ~/.vim/undodir automatisch beim ersten Start kein manueller Eingriff nötig.


Erster Start & Verifikation

1. NeoVim starten

nvim

Beim ersten Start lädt lazy.nvim automatisch alle Plugins herunter. Das dauert beim ersten Mal 25 Minuten. Der Fortschritt wird in einem Fenster angezeigt.

2. Plugin-Sync abschließen

:Lazy sync

3. Mason-Pakete

Die Konfiguration installiert folgende Pakete automatisch beim Start (definiert in mason.lua):

  • roslyn C# LSP (über crashdummyy/mason-registry)
  • html-lsp Für Razor Co-Hosting
  • css-lsp CSS Sprachserver
  • tailwindcss-language-server Tailwind CSS

Zur Überprüfung und manuellen Installation:

:Mason

4. Treesitter-Parser

Die konfigurierten Parser werden automatisch installiert (auto_install = true). Zur manuellen Installation aller Parser:

:TSInstall all

Auf Windows sicherstellen dass gcc im PATH erreichbar ist (MSYS2-Schritt weiter oben).

5. Gesundheitscheck

:checkhealth
Bereich Befehl
Allgemein :checkhealth
Treesitter :checkhealth nvim-treesitter
LSP (in .cs-Datei) :LspInfo
Mason :Mason
Plugins :Lazy

6. Verzeichnisstruktur

~/.config/nvim/                          (Windows: %LOCALAPPDATA%\nvim\)
├── init.lua
├── lazy-lock.json                       <- Plugin-Versionen (nicht bearbeiten)
├── lazyvim.json                         <- LazyVim-Extras Tracking
├── lua/
│   ├── config/
│   │   ├── autocmds.lua                 <- Format-on-save, Yank-Highlight, Razor
│   │   ├── keymaps.lua                  <- Alle Keybindings
│   │   ├── lazy.lua                     <- Plugin-Manager Setup + LazyVim Extras
│   │   └── options.lua                  <- Editor-Einstellungen
│   └── plugins/
│       ├── alpha.lua                    <- Startbildschirm (alpha-nvim)
│       ├── autopares.lua                <- Auto-Klammern
│       ├── colorscheme.lua              <- kanagawa-paper
│       ├── dashboard.lua                <- Snacks Dashboard mit DIM-M ASCII-Art
│       ├── gitsigns.lua                 <- Git-Zeichen im Gutter + Keymaps
│       ├── lazygit.lua                  <- LazyGit Integration (<leader>lg)
│       ├── lsp.lua                      <- lua_ls Konfiguration
│       ├── lualine.lua                  <- Statusleiste
│       ├── mason-lspconfig.lua          <- Mason <-> lspconfig Bridge
│       ├── mason.lua                    <- LSP/Tool Installer inkl. crashdummyy Registry
│       ├── neo-tree.lua                 <- Dateibaum (- = navigate_up, . = root setzen)
│       ├── nvim-lint.lua                <- Linter für alle Dateitypen
│       ├── obsidian.lua                 <- Obsidian Vault Integration
│       ├── render-markdown.lua          <- Markdown Rendering mit Icons
│       ├── roslyn.lua                   <- C#/Razor LSP mit Inlay Hints
│       ├── treesitter-context.lua       <- Kontext-Anzeige am oberen Rand
│       ├── treesitter.lua               <- Parser + Textobjects + Context
│       └── witch-key.lua                <- Keybinding-Hilfe
└── spell/
    ├── de.utf-8.add                     <- Eigene deutsche Wörter (im Repo)
    ├── de.utf-8.add.spl
    ├── de.utf-8.spl                     <- Deutsches Wörterbuch (im Repo)
    ├── de.utf-8.sug
    ├── en.utf-8.spl                     <- Englisches Wörterbuch (im Repo)
    └── en.utf-8.sug

Die Wörterbuchdateien sind bereits im Repo enthalten kein separater Download nötig.


Tastaturbefehle Übersicht

Allgemein

Kürzel Aktion
<Space> Leader-Taste
<leader>c Suche ausblenden
<leader>a Startbildschirm öffnen
<leader>td Diagnose ein-/ausschalten
<leader>pa Vollständigen Dateipfad kopieren
<leader>z Rechtschreib-Vorschläge

Navigation & Fenster

Kürzel Aktion
<C-h/j/k/l> Zwischen Fenstern wechseln
<leader>sv Vertikal splitten
<leader>sh Horizontal splitten
<C-Pfeil> Fenstergröße anpassen
<C-d> / <C-u> Halbe Seite runter/hoch (zentriert)
n / N Suchergebnis vor/zurück (zentriert)

Buffer

Kürzel Aktion
<leader>bn Nächster Buffer
<leader>bp Vorheriger Buffer

Bearbeiten

Kürzel Aktion
<Alt-j/k> Zeile/Auswahl nach unten/oben
<leader>p (Visual) Einfügen ohne Yank-Register zu überschreiben
<leader>x Löschen ohne Yank-Register zu überschreiben
J Zeilen verbinden (Cursor bleibt)
> / < (Visual) Einrücken und Auswahl beibehalten

Git (gitsigns + lazygit)

Kürzel Aktion
]h / [h Nächster/Vorheriger Hunk
<leader>gs Hunk stagen
<leader>gr Hunk zurücksetzen
<leader>gS Ganzen Buffer stagen
<leader>gp Hunk-Vorschau
<leader>gb Blame anzeigen
<leader>gd Diff anzeigen
<leader>gtb Line Blame ein-/ausschalten
<leader>gtd Gelöschte Zeilen anzeigen
<leader>lg LazyGit öffnen

LSP (C# / Roslyn)

Kürzel Aktion
gd Zur Definition
gD Zur Deklaration
gi Zur Implementierung
gr Referenzen anzeigen
gt Zur Typdefinition
K Hover-Dokumentation
gK Signatur-Hilfe
<leader>ca Code Actions
<leader>cr Umbenennen
<leader>cf Buffer formatieren
<leader>cd Diagnose anzeigen
]d / [d Nächste/Vorherige Diagnose
<leader>cq Diagnosen in Quickfix-Liste
<leader>ws Workspace-Symbol suchen

Treesitter Textobjects

Kürzel Aktion
af / if Äußere/Innere Funktion
ac / ic Äußere/Innere Klasse
al / il Äußere/Innere Schleife
ai / ii Äußeres/Inneres If/Else
]f / [f Zur nächsten/vorherigen Funktion
]c / [c Zur nächsten/vorherigen Klasse
[x Zum äußeren Treesitter-Kontext springen
<leader>ut Treesitter-Kontext ein-/ausschalten

Linting

Kürzel Aktion
<leader>cl Aktuellen Buffer linten
<leader>cL Aktive Linter für Dateityp anzeigen

Obsidian

Kürzel Aktion
<leader>on Neue Notiz
<leader>oo In Obsidian öffnen
<leader>of Notiz schnell finden
<leader>os Notizen durchsuchen
<leader>ol Links anzeigen
<leader>ob Backlinks anzeigen
<leader>ot Tags anzeigen
<leader>od Daily Notes
<leader>oT Template einfügen