mirror of
https://github.com/MasterGordon/neovim-config.git
synced 2026-09-20 06:33:00 +00:00
No description
- Lua 100%
| kitty | ||
| lua | ||
| .gitignore | ||
| .stylua.toml | ||
| CLAUDE.md | ||
| init.lua | ||
| lazy-lock.json | ||
| README.md | ||
Neovim Configuration
Personal Neovim configuration built with lazy.nvim for modern plugin management.
Requirements
Core
| Tool | Why |
|---|---|
| Neovim >= 0.11 | Uses vim.lsp.config/vim.lsp.enable, vim.diagnostic.jump, vim.o.winborder |
| git, curl, unzip | lazy.nvim bootstrap, Mason downloads |
| gcc + make | Building telescope-fzf-native and tree-sitter parsers |
| ripgrep | Telescope live grep / grep string |
| fd | Faster Telescope file finding |
| xclip | Clipboard provider — hard-coded in init.lua (X11; use wl-clipboard on Wayland and adjust vim.g.clipboard) |
| tree-sitter CLI | Required system-wide by tree-sitter-manager.nvim to compile parsers |
| Rust / cargo | blink.cmp builds its fuzzy matcher with cargo build --release |
| A Nerd Font | Icons in Heirline, Neo-tree, Telescope, blink |
Language toolchains
Mason installs the language servers themselves, but several need a runtime present:
| Toolchain | Needed for |
|---|---|
| Node.js + npm | vtsls, eslint, tailwindcss, html/css/json/yaml LS, intelephense, prismals, bashls, cspell, prettierd |
| .NET SDK | roslyn, fsautocomplete, csharpier |
| Go | gopls |
| Rust (rustup) | rust_analyzer |
| Zig | zls |
| PHP | intelephense, php-cs-fixer |
| Python | some Mason packages |
Formatters not managed by Mason
oxfmt— JS/TS/CSS formatting (npm i -g oxfmt, or provide it per project)csharpierd— C# formatting daemon (dotnet tool install -g csharpier, orbun i -g csharpierd)
stylua, prettierd, php-cs-fixer and cspell are auto-installed by mason-tool-installer.
Optional
- Bun — for the
neotest-bunadapter - Jest in the project (
./node_modules/.bin/jest) — for theneotest-jestadapter - kitty — the
kitty/directory holds a matching terminal config
Installing on Arch Linux
# Core
sudo pacman -S --needed \
neovim git curl wget unzip base-devel gcc make cmake \
ripgrep fd xclip wl-clipboard tree-sitter-cli
# Language toolchains for the configured LSP servers
sudo pacman -S --needed \
nodejs npm rustup go dotnet-sdk php python python-pip zig
rustup default stable # blink.cmp needs a working cargo
# Nerd Font (any patched font works; these match kitty/kitty.conf)
sudo pacman -S --needed ttf-nerd-fonts-symbols-mono ttf-hack-nerd
# Terminal config in kitty/ (optional)
sudo pacman -S --needed kitty
From the AUR (via yay):
# Neovim nightly, if you want it ahead of the repo version
yay -S neovim-nightly-bin
# The font referenced by kitty/kitty.conf
yay -S ttf-input
Formatters that Mason does not handle:
npm i -g oxfmt
dotnet tool install -g csharpier # provides csharpierd
Installation
- Backup your existing Neovim configuration if you have one
- Clone this repository to your Neovim config directory:
git clone <your-repo-url> ~/.config/nvim - Start Neovim - lazy.nvim will automatically bootstrap and install all plugins:
nvim
Features
- LSP Support: Pre-configured language servers for TypeScript, Lua, Go, Rust, C#, PHP, and more
- Auto-formatting: Format-on-save with conform.nvim
- Testing: Integrated test runner with neotest (Jest and Bun support)
- Fuzzy Finding: Telescope for files, grep, LSP symbols, and more
- Syntax Highlighting: Tree-sitter based highlighting
- Git Integration: Gitsigns for inline git blame and hunks
- Completions: Blink.cmp for fast autocompletion
- File Explorer: Neo-tree for file navigation
- Status Line: Custom Heirline configuration
Key Bindings
Leader key: Space
File Navigation
<leader>ff- Find files<leader>fg- Live grep<leader>fb- Browse buffers
LSP
gd- Go to definitiongr- Find references<F2>- Rename symbol<leader>a- Code actions<leader>d- Show diagnostics
Testing
<leader>tt- Run nearest test<leader>tf- Run tests in current file<leader>td- Display test output
Formatting
<leader>f- Format buffer (also auto-formats on save)
Other
<leader><CR>- Open terminal<leader>n- Insert C# namespace (C# files only)
Structure
.
├── init.lua # Entry point
├── lua/
│ ├── keybinds.lua # Global keybindings
│ ├── diagnostic.lua # Diagnostic configuration
│ ├── snippets.lua # Custom snippets
│ └── plugins/ # Plugin configurations
│ ├── lsp.lua
│ ├── telescope.lua
│ ├── conform.lua
│ ├── neotest.lua
│ └── ...
└── CLAUDE.md # AI assistant context
Customization
- Edit plugin configurations in
lua/plugins/ - Add new plugins to the
require('lazy').setup()call ininit.lua - Modify keybindings in
lua/keybinds.luaor plugin-specific files - LSP servers and formatters are managed in
lua/plugins/lsp.luaandlua/plugins/conform.lua