A modern, feature-rich Neovim configuration built on LazyVim with support for multiple programming languages, elegant UI enhancements, and powerful development tools.
- LazyVim Foundation: Built on the excellent LazyVim starter template with intelligent lazy-loading
- Multi-Language Support: First-class support for Python, Go, Java, TypeScript, and Web development
- Neovide Ready: Fully optimized for Neovide GUI with smooth cursor animations and visual enhancements
- Beautiful UI: Modern colorschemes with Rosepine Moon as the default, customizable themes
- Powerful Tools: Integrated development utilities including Docker support, Linux tools, and more
- Smart Completion: Blink completion engine for lightning-fast code completion
- File Navigation: NeoTree file explorer with floating and sidebar modes
- Fuzzy Finding: Telescope for files, live grep, and symbol navigation
- Relative Line Numbers: Hybrid line numbers for efficient navigation
- Professional Keybindings: Carefully curated keyboard shortcuts for optimal workflow
- Neovim: v0.9.0 or later
- Node.js: For LSP and code completion
- Python: For Python language support and general tools
- Git: For plugin management with lazy.nvim
- A Nerd Font: For icons and visual elements (recommended: JetBrains Mono or Fantasque Sans Mono)
- Docker: For Docker plugin and container development
- Language Servers: Automatically installed for supported languages
Ensure you have Neovim 0.9.0+ installed:
nvim --versionInstall a Nerd Font. Popular choices:
Replace your existing Neovim config:
# Backup your current config if needed
mv ~/.config/nvim ~/.config/nvim.backup
# Clone this configuration
git clone <your-repo-url> ~/.config/nvimnvimLazy.nvim will automatically:
- Download and install all plugins
- Install language servers and tools
- Set up the development environment
The first startup may take 2-3 minutes as plugins are downloaded and compiled.
.config/nvim/
βββ init.lua # Main entry point with Neovide config
βββ lazy-lock.json # Plugin version lock file
βββ lazyvim.json # LazyVim configuration metadata
βββ stylua.toml # Lua code formatting configuration
β
βββ lua/
βββ config/ # Core configuration
β βββ autocmds.lua # Autocommands and event handlers
β βββ keymaps.lua # Custom keybindings
β βββ lazy.lua # Plugin manager setup
β βββ options.lua # Editor settings and preferences
β
βββ plugins/ # Plugin specifications and configs
βββ colorschemes.lua # Color theme configurations
βββ docker.lua # Docker integration
βββ example.lua # Example plugin setup
βββ go.lua # Go language support
βββ java.lua # Java language support
βββ linux-tools.lua # Linux development tools
βββ neo-tree.lua # File explorer configuration
βββ python.lua # Python language support
βββ telescope.lua # Fuzzy finder configuration
βββ theme.lua # UI theme customization
βββ typescript.lua # TypeScript/JavaScript support
βββ web.lua # Web development tools
| Binding | Action |
|---|---|
<Space> |
Leader key |
<Tab> |
Next buffer |
<S-Tab> |
Previous buffer |
<C-x> |
Close current buffer |
<leader>X |
Force close buffer (discard changes) |
<leader>bo |
Close other buffers |
| Binding | Action |
|---|---|
<leader><Tab> |
Toggle NeoTree (sidebar left) |
<leader>e |
Toggle NeoTree (floating) |
<leader>ff |
Find files in current directory |
<leader>fp |
Find plugin files |
| Binding | Action |
|---|---|
<leader>wx |
Close current window |
For more keybindings, see keymaps.lua and the LazyVim documentation.
Edit lua/plugins/colorschemes.lua:
-- Default colorscheme: Rosepine Moon
return {
{
"rose-pine/neovim",
name = "rose-pine",
priority = 1000,
lazy = false,
config = function()
require("rose-pine").setup({
variant = "moon",
styles = { transparency = true },
disable_background = true,
disable_float_background = true,
})
vim.cmd("colorscheme rose-pine-moon")
end,
},
}Other available themes: Gruvbox (with dark hard and light soft variants) and Tokyodark.
Edit lua/config/options.lua to customize:
- Font and font size
- Tab width and indentation
- Line number display
- Scroll behavior
- Mouse and clipboard settings
Add new keybindings to lua/config/keymaps.lua:
local map = vim.keymap.set
map("n", "<leader>custom", "<cmd>echo 'Custom binding'<cr>", { desc = "Custom action" })Edit init.lua to customize Neovide-specific settings:
- Cursor animation styles
- Opacity and transparency
- Scroll animations
- Window blur effects
- Refresh rate settings
- LSP: Pyright
- Formatting: Black
- Linting: Ruff
- Configuration: lua/plugins/python.lua
- LSP: gopls
- Formatting: gofmt
- Testing tools integrated
- Configuration: lua/plugins/go.lua
- LSP: Eclipse JDT
- Build tools: Maven, Gradle support
- Configuration: lua/plugins/java.lua
- LSP: TypeScript-language-server
- Formatting: Prettier
- Framework support: React, Vue, Angular
- Configuration: lua/plugins/typescript.lua
- HTML, CSS, SCSS support
- Emmet abbreviations
- Live reload capabilities
- Configuration: lua/plugins/web.lua
This config includes Docker integration for containerized development workflows:
# Docker commands and container management available within Neovim
# See lua/plugins/docker.lua for configuration detailsEnhanced Linux development experience with integrated tools for system programming and scripting.
Configuration: lua/plugins/linux-tools.lua
This config uses lazy.nvim for plugin management.
:Lazy " Open lazy.nvim UI
:Lazy sync " Sync all plugins
:Lazy update " Update all plugins
:Lazy install " Install missing plugins
:checkhealth " Check plugin healthThe configuration is optimized for performance with:
- Smart lazy-loading of plugins
- Disabled unnecessary rtp plugins
- Configurable checker for plugin updates
- Efficient plugin defaults
This configuration includes copilot.lua and copilot-chat.nvim for AI-powered code assistance.
- Open Copilot Chat:
<leader>ccq(quick chat) - Toggle Chat Panel:
<leader>cct - Code Actions: Copilot suggestions available in insert mode
See lua/plugins/copilot.lua for configuration.
:Lazy sync
:checkhealthLSPs are auto-installed for recognized file types. Manually trigger installation:
:Mason " Open Mason UIEnsure you have installed a Nerd Font and configured it in your terminal or Neovide settings.
Update font in lua/config/options.lua:
vim.o.guifont = "YourFont Nerd Font:h14"Check loaded plugins:
:Lazy profileFeel free to customize this configuration to match your workflow. Some ideas:
- Add language-specific plugins
- Create custom keybindings
- Integrate additional LSPs
- Add snippets and abbreviations
- Modify color schemes and themes
This Neovim configuration is provided as-is. Refer to individual plugin licenses for details.
Happy coding! π
For questions or issues, please check the LazyVim documentation or the respective plugin repositories.