A modern, feature-rich Neovim configuration built with Lua, designed for efficient development across multiple programming languages.
Minimal and simple as well as beautiful theme thanks to moonfly
- Modern Plugin Management: Uses Lazy.nvim for fast, lazy-loaded plugin management
- Language Server Protocol (LSP): Full LSP support with automatic server installation via Mason
- Intelligent Code Completion: Powered by blink.cmp
- Advanced Syntax Highlighting: Tree-sitter integration with support for 12+ languages
- Fuzzy Finding: Telescope integration for file searching, live grep, and more
- Git Integration: GitSigns, Diffview, and Fugitive for comprehensive Git workflow
- Code Formatting: Conform.nvim with language-specific formatters
- Tmux Integration: Seamless navigation between Neovim and Tmux panes
- Enhanced UI: Beautiful statusline with Lualine and moonfly theme
- Neovim >= 0.9.0
- Git
- A Nerd Font (for icons)
- ripgrep - For faster Telescope live grep functionality
- Node.js - Required for some LSP servers (will be prompted if needed)
- Clone this configuration:
git clone https://github.com/dredstone1/neovim-config.git ~/.config/nvim
- Clone this configuration:
# PowerShell/Git Bash git clone https://github.com/dredstone1/neovim-config.git ~/AppData/Local/nvim # Or use full path if above doesn't work git clone https://github.com/dredstone1/neovim-config.git "$env:LOCALAPPDATA/nvim"
-
Open nvim:
nvim # nvim . // to open it as a project.
-
Install plugins: Lazy.nvim will automatically install all plugins on first launch.
Note: On first launch, you'll see plugins downloading - this is normal and only happens once!
- lazy.nvim - Modern plugin manager
- plenary.nvim - Lua utility functions
- nvim-web-devicons - File type icons
- nvim-lspconfig - LSP configuration
- mason.nvim - Portable package manager
- mason-lspconfig.nvim - Mason + LSP integration
- mason-tool-installer.nvim - Auto-install tools
- blink.cmp - Fast completion engine
- nvim-treesitter - Advanced syntax highlighting
- conform.nvim - Code formatting
- Comment.nvim - Smart commenting
- nvim-autopairs - Auto-close brackets
- telescope.nvim - Fuzzy finder
- trouble.nvim - Diagnostics and quickfix
- gitsigns.nvim - Git decorations
- diffview.nvim - Git diff viewer
- vim-fugitive - Git wrapper
- vim-moonfly-colors - Color theme
- lualine.nvim - Statusline (moonfly theme)
- render-markdown.nvim - Markdown rendering
- tmux.nvim - Seamless Tmux navigation
This configuration supports the following languages out of the box:
- Lua (lua_ls, stylua)
- Python (pyright, black, isort)
- JavaScript/TypeScript (prettier, prettierd)
- HTML/CSS (html, cssls, prettier)
- C/C++ (clangd, clang-format)
- Rust (rustfmt)
- JSON (jsonls, prettier)
- Markdown (prettier)
- Java
- Bash
The leader key is set to <Space>
.
<leader>ff
- Find files<leader>fg
- Live grep<leader>fb
- Browse buffers<leader>fh
- Help tags<leader>fc
- Colorscheme picker<leader>e
- File explorer, go back in File explorer
K
- Hover documentationgd
- Go to definitiongD
- Go to declarationgi
- Go to implementationgr
- Go to referencesgt
- Go to type definitiongn
- Rename symbolgO
- Document symbols
<leader>gs
- Git status<leader>gd
- Git diff view<leader>hs
- Stage hunk<leader>hr
- Reset hunk<leader>hS
- Stage buffer]c
/[c
- Navigate between changes
<F3>
- Format current buffer:Format
- Format command with range support
<leader>xx
- Toggle diagnostics<leader>cs
- Document symbols<leader>cl
- LSP definitions/references
gcc
- Toggle line commentgbc
- Toggle block commentgc
- Comment motion (visual mode)
<leader>cv
- Vertical split<leader>cb
- Horizontal split<leader>cc
- Close window
<C-h>
/<C-j>
/<C-k>
/<C-l>
- Navigate panes<A-h>
/<A-j>
/<A-k>
/<A-l>
- Resize panes
.
βββ init.lua # Entry point
βββ lua/
β βββ config/
β β βββ init.lua # Config loader
β β βββ settings.lua # Vim settings
β β βββ keymap.lua # Key mappings
β β βββ lazy.lua # Plugin manager setup
β β βββ diagnostic.lua # Diagnostic configuration
β βββ plugins/ # Plugin configurations
β β βββ init.lua # Core plugins
β β βββ lsp-config.lua # LSP setup
β β βββ telescope.lua # Fuzzy finder
β β βββ treesitter.lua # Syntax highlighting
β β βββ conform.lua # Code formatting
β β βββ lualine.lua # Statusline
β β βββ gitsigns.lua # Git integration
β β βββ trouble.lua # Diagnostics
β β βββ tmux.lua # Tmux integration
β β βββ ... # Other plugins
-
Add the Treesitter parser in
lua/plugins/treesitter.lua
:ensure_installed = { -- existing languages... "your_language", }
-
Add LSP server in
lua/plugins/lsp-config.lua
:local servers = { -- existing servers... your_language_ls = {}, }
-
Add formatter in
lua/plugins/conform.lua
:formatters_by_ft = { -- existing formatters... your_language = { "your_formatter" }, }
All Vim settings are in lua/config/settings.lua
. Key configurations include:
- Tab width: 4 spaces
- Relative line numbers enabled
- Persistent undo enabled
- No swap files
- Scroll offset: 8 lines
Feel free to fork this repository and customize it to your needs. If you have suggestions for improvements, please open an issue or submit a pull request.
This configuration is open source and available under the MIT License.
Happy coding! π