A complete Neovim configuration for Python, C/C++, and Angular development on Arch Linux and Windows 11.
- 🚀 Modern Plugin Manager: lazy.nvim for fast startup times
- 🎨 Beautiful UI: Tokyo Night theme, Lualine statusline, Bufferline
- 📝 LSP Support: Full language server protocol integration for Python, C/C++, TypeScript/Angular
- ⚡ Auto-completion: Intelligent code completion with nvim-cmp
- 🌳 Treesitter: Advanced syntax highlighting and code understanding
- 🔍 Fuzzy Finding: Telescope for file and text searching
- 📁 File Explorer: nvim-tree for project navigation
- 🔧 Git Integration: Gitsigns for git status in the gutter
- 🎯 Smart Editing: Auto-pairs, comments, indent guides
Install the required packages using pacman:
# Core dependencies
sudo pacman -S neovim git nodejs npm python python-pip
# Build tools for C/C++ and native extensions
sudo pacman -S base-devel gcc clang cmake make
# Optional but recommended
sudo pacman -S ripgrep fd fzfInstall Chocolatey package manager first, then open PowerShell as Administrator and run:
# Core dependencies
choco install neovim git nodejs-lts python -y
# Build tools for C/C++ (optional, for C/C++ development)
choco install llvm -y
# Recommended tools for Telescope
choco install ripgrep fd -yNote: After installing packages with Chocolatey, close and reopen your terminal for PATH changes to take effect.
git clone https://github.com/yourusername/neovim-dotfiles.git ~/.config/nvimgit clone https://github.com/yourusername/neovim-dotfiles.git $env:LOCALAPPDATA\nvimOr if you already have the files, copy them to the config location:
Copy-Item -Path "path\to\neovim-dotfiles\*" -Destination "$env:LOCALAPPDATA\nvim" -Recurse -ForceThe configuration uses the native Neovim 0.11+ LSP API. Install language servers system-wide:
sudo npm install -g pyrightsudo pacman -S clangsudo npm install -g typescript typescript-language-server
sudo npm install -g @angular/language-serversudo npm install -g vscode-langservers-extractedsudo pacman -S lua-language-serverOpen PowerShell (regular or Administrator) and run:
npm install -g pyright typescript typescript-language-server @angular/language-server vscode-langservers-extracted# Run as Administrator
choco install lua-language-server -yclangd is included when you install LLVM:
# Run as Administrator
choco install llvm -y-
Open Neovim:
nvim
-
Wait for lazy.nvim to automatically install all plugins (this happens on first launch)
-
After plugins are installed, run:
:checkhealthThis will show you if anything is missing
-
Install Treesitter parsers:
:TSInstall python c cpp typescript javascript html css lua
The leader key is set to Space
<leader>w- Save file<leader>q- Quit<leader>Q- Quit all (force)<leader>nh- Clear search highlights
<C-h>- Move to left window<C-j>- Move to bottom window<C-k>- Move to top window<C-l>- Move to right window
<leader>sv- Split vertically<leader>sh- Split horizontally<leader>se- Make splits equal size<leader>sx- Close current split
<S-l>- Next buffer<S-h>- Previous buffer
<leader>e- Toggle file explorer
<leader>ff- Find files<leader>fg- Live grep (search in files)<leader>fb- Find buffers<leader>fh- Help tags
<leader>d- Go to definition<leader>D- Go to declaration<leader>i- Go to implementation<leader>r- Show referencesK- Hover documentation<leader>rn- Rename symbol<leader>ca- Code actions
<leader>do- Open diagnostic float[d- Go to previous diagnostic]d- Go to next diagnostic
<leader>gb- Blame line<leader>gp- Preview hunk<leader>gr- Reset hunk
gcc- Toggle line commentgc(in visual mode) - Toggle comment for selection<C-space>- Trigger completion<C-k>- Select previous completion item<C-j>- Select next completion item
~/.config/nvim/ # Linux
%LOCALAPPDATA%\nvim\ # Windows
├── init.lua # Main entry point
├── lua/
│ ├── config/
│ │ ├── options.lua # Neovim options
│ │ └── keymaps.lua # Key mappings
│ └── plugins/
│ ├── lsp.lua # LSP configuration
│ ├── nvim-cmp.lua # Autocompletion
│ ├── treesitter.lua # Syntax highlighting
│ ├── nvim-tree.lua # File explorer
│ ├── telescope.lua # Fuzzy finder
│ ├── gitsigns.lua # Git integration
│ ├── lualine.lua # Statusline
│ ├── bufferline.lua # Buffer tabs
│ ├── colorscheme.lua # Color theme
│ ├── autopairs.lua # Auto pairs
│ ├── comment.lua # Comment toggling
│ ├── indent-blankline.lua # Indent guides
│ └── which-key.lua # Keybinding hints
Edit lua/plugins/colorscheme.lua. Some popular alternatives:
catppuccin/nvim- Catppuccin themerose-pine/neovim- Rose Pine themeEdenEast/nightfox.nvim- Nightfox theme
Edit lua/config/keymaps.lua to customize key mappings.
Create a new file in lua/plugins/ with your plugin configuration. lazy.nvim will automatically load it.
Example:
-- lua/plugins/my-plugin.lua
return {
"author/plugin-name",
config = function()
-- Plugin configuration
end,
}- Virtual environments are automatically detected
- Use
:!python %to run current file - Pyright provides type checking
- clangd provides compilation database support
- Create a
compile_commands.jsonfor best results - Use CMake or bear to generate compilation database
- Make sure you're in an Angular project directory
- The Angular language server provides template support
- TypeScript LSP handles .ts files
- Check if language server is installed:
- Linux:
:!which pyright(or clangd, typescript-language-server) - Windows:
:!where pyright(or clangd, typescript-language-server)
- Linux:
- Check LSP status:
:LspInfo - Check health:
:checkhealth
- Update parsers:
:TSUpdate - Reinstall specific parser:
:TSInstall python
- Update plugins:
:Lazy sync - Check for errors:
:Lazy
- Check startup time:
nvim --startuptime startup.log - Disable unused plugins in their respective files
To update all plugins:
:Lazy sync
To update Neovim:
sudo pacman -S neovimchoco upgrade neovim -yThis configuration is free to use and modify as you wish.