- 🎨 Beautiful UI with Solarized Osaka colorscheme and custom dashboard
- 🔍 Powerful Search with Telescope and file browser integration
- 💡 Smart Completion with nvim-cmp and multiple sources
- 🌳 Advanced Syntax highlighting with Treesitter
- 🔧 LSP Integration for 15+ programming languages
- 🎯 Code Actions with formatting, linting, and refactoring
- 📝 Snippet Support with LuaSnip and friendly-snippets
- 🚀 Fast Startup with lazy loading and optimized performance
- 🎮 Git Integration with Gitsigns and Git.nvim
- 🖥️ Terminal Integration with ToggleTerm
- Neovim >= 0.9.0
- Git >= 2.19.0
- Node.js >= 16.0.0 (for LSP servers)
- Python >= 3.8 (for Python support)
- Go >= 1.19 (for Go support)
- Java >= 11 (for Java support)
- A Nerd Font (recommended: JetBrains Mono Nerd Font)
# Install required dependencies
# On macOS
brew install neovim git node python go
# On Ubuntu/Debian
sudo apt update
sudo apt install neovim git nodejs npm python3 python3-pip golang-go
# On Arch Linux
sudo pacman -S neovim git nodejs npm python python-pip go
# Backup existing configuration (if any)
mv ~/.config/nvim ~/.config/nvim.backup
# Clone this configuration
git clone https://github.com/yourusername/nvim-config ~/.config/nvim
# Start Neovim (plugins will install automatically)
nvim
- Primary: Solarized Osaka (with transparency support)
- Alternative: Catppuccin, Tokyo Night
Language | LSP Server | Formatter | Linter | Debugger |
---|---|---|---|---|
JavaScript/TypeScript | tsserver | Prettier | ESLint | ✅ |
Python | Pyright | Black, isort | Pylint | ✅ |
Go | gopls | gofumpt | - | ✅ |
Java | jdtls | google-java-format | - | ✅ |
C/C++ | clangd | clang-format | - | - |
PHP | intelephense | phpcbf | phpcs | - |
Lua | lua_ls | stylua | - | - |
HTML/CSS | html, cssls | Prettier | - | - |
JSON | jsonls | Prettier | - | - |
Tailwind CSS | tailwindcss | - | - | - |
Svelte | svelte | Prettier | ESLint | - |
GraphQL | graphql | Prettier | - | - |
Prisma | prismals | - | - | - |
Markdown | marksman | Prettier | - | - |
YAML | yamlls | Prettier | - | - |
Docker | dockerls | - | - | - |
Key | Mode | Action |
---|---|---|
<Space> |
Normal | Leader key |
jk / kj |
Insert | Exit insert mode |
<C-a> |
Normal | Select all |
<Leader>+ |
Normal | Increment number |
<Leader>- |
Normal | Decrement number |
Key | Mode | Action |
---|---|---|
ss |
Normal | Split horizontal |
sv |
Normal | Split vertical |
<C-h/j/k/l> |
Normal | Navigate windows |
<C-w><arrows> |
Normal | Resize windows |
Key | Mode | Action |
---|---|---|
;f |
Normal | Find files |
;r |
Normal | Live grep |
\\ |
Normal | List buffers |
sf |
Normal | File browser |
;; |
Normal | Resume last search |
Key | Mode | Action |
---|---|---|
gd |
Normal | Go to definition |
gD |
Normal | Go to declaration |
gr |
Normal | Show references |
gi |
Normal | Go to implementation |
K |
Normal | Hover documentation |
<Leader>ca |
Normal/Visual | Code actions |
<Leader>rn |
Normal | Rename symbol |
[d / ]d |
Normal | Navigate diagnostics |
Key | Mode | Action |
---|---|---|
<Leader>gb |
Normal | Git blame |
<Leader>go |
Normal | Open in browser |
Key | Mode | Action |
---|---|---|
<C-\> |
Normal/Insert | Toggle terminal |
Key | Mode | Action |
---|---|---|
<Leader>r |
Normal | Convert hex to HSL |
<Leader>i |
Normal | Toggle inlay hints |
<Leader>z |
Normal | Zen mode |
<Leader>cc |
Normal | Generate comment |
- LazyVim - Base configuration framework
- lazy.nvim - Plugin manager
- plenary.nvim - Lua utilities
- solarized-osaka.nvim - Colorscheme
- lualine.nvim - Statusline
- bufferline.nvim - Buffer tabs
- incline.nvim - Floating filename
- dashboard-nvim - Start screen
- noice.nvim - Enhanced UI messages
- mini.animate - Smooth animations
- telescope.nvim - Fuzzy finder
- neo-tree.nvim - File explorer
- nvim-treesitter - Syntax highlighting
- nvim-cmp - Autocompletion
- LuaSnip - Snippet engine
- nvim-autopairs - Auto pairs
- Comment.nvim - Smart commenting
- nvim-lspconfig - LSP configuration
- mason.nvim - LSP installer
- none-ls.nvim - Formatting & linting
- nvim-dap - Debug adapter protocol
- copilot.lua - GitHub Copilot integration
- gitsigns.nvim - Git decorations
- git.nvim - Git commands
- toggleterm.nvim - Terminal management
- which-key.nvim - Key binding hints
- zen-mode.nvim - Distraction-free writing
- nvim-colorizer.lua - Color highlighting
~/.config/nvim/
├── init.lua # Entry point
├── lazy-lock.json # Plugin lockfile
├── lazyvim.json # LazyVim configuration
├── lua/
│ ├── config/ # Core configuration
│ │ ├── autocmds.lua # Auto commands
│ │ ├── keymaps.lua # Key mappings
│ │ ├── lazy.lua # Plugin manager setup
│ │ ├── options.lua # Neovim options
│ │ └── lsp/ # LSP configuration
│ ├── emha/ # Custom utilities
│ │ ├── hsl.lua # Color conversion utilities
│ │ ├── icons.lua # Icon definitions
│ │ ├── lsp.lua # LSP helpers
│ │ ├── toggleterm.lua # Terminal configuration
│ │ └── snip/ # Custom snippets
│ ├── plugins/ # Plugin configurations
│ │ ├── coding.lua # Coding enhancements
│ │ ├── colorscheme.lua # Theme configuration
│ │ ├── editor.lua # Editor plugins
│ │ ├── ui.lua # UI plugins
│ │ └── ...
│ └── utils/ # Utility functions
└── snippets/ # Custom snippet collections
Convert hex colors to HSL format with <Leader>r
- useful for CSS development.
Toggle LSP inlay hints with <Leader>i
for better code understanding.
Automatic language-specific indentation:
- 2 spaces: JavaScript, TypeScript, HTML, CSS, Lua
- 4 spaces: Python, Java, C/C++, PHP, Go
Beautiful ASCII art dashboard with quick access to recent files and projects.
-
Install LSP server via Mason:
-- In lua/plugins/mason.lua ensure_installed = { "your_language_server", -- ... other servers }
-
Configure LSP in
lua/plugins/lspconfig.lua
:lspconfig["your_server"].setup({ capabilities = capabilities, on_attach = on_attach, -- server-specific settings })
-
Add formatter/linter in
lua/plugins/none-ls.lua
:sources = { formatting.your_formatter, diagnostics.your_linter, -- ... other sources }
Edit lua/config/lazy.lua
:
opts = {
colorscheme = "your_preferred_theme",
}
Add to lua/config/keymaps.lua
:
keymap.set("n", "<your_key>", "<your_command>", { desc = "Description" })
- LSP not working: Run
:Mason
and ensure servers are installed - Treesitter errors: Run
:TSUpdate
to update parsers - Slow startup: Check
:Lazy profile
for plugin load times - Missing icons: Install a Nerd Font and configure your terminal
Run :checkhealth
to diagnose configuration issues.
Check logs with:
:Lazy log
- Plugin manager logs:LspLog
- LSP server logs:messages
- Neovim messages
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This configuration is licensed under the MIT License. See LICENSE for details.
- LazyVim for the excellent base configuration
- Neovim community for the amazing ecosystem
- All plugin authors for their incredible work
⭐ If you find this configuration helpful, please give it a star! ⭐