A modern, modular, and highly customizable Neovim configuration built with LazyVim and inspired by Takuya Matsuyama's setup.
- π¨ Multiple Colorschemes: Solarized Osaka, Ayu, Night Owl, Oh Lucy, Horizon, and more
- π§ AI Integration: GitHub Copilot with chat support
- π¦ Plugin Management: Lazy.nvim for fast, efficient plugin loading
- π Enhanced Navigation: Telescope, Flash.nvim, and Neo-tree
- π» LSP Support: Full language server protocol integration for multiple languages
- π― Smart Completion: Blink.cmp for blazing-fast completions
- π§ Developer Tools: LazyGit, code runner, terminal integration
- π Markdown Support: Enhanced markdown editing and preview
- π LeetCode Integration: Solve coding problems directly in Neovim
- π Session Management: Auto-save and restore sessions
- Neovim >= 0.10.0
- Git >= 2.19.0
- Node.js >= 18.x (for LSP servers)
- Ripgrep (for Telescope grep)
- A Nerd Font (recommended: JetBrains Mono Nerd Font, Fira Code Nerd Font)
- C Compiler (for Treesitter)
- Python 3 (optional, for some plugins)
-
Backup existing Neovim configuration (if any):
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak
-
Clone this repository:
git clone https://github.com/pyankie/nvim-config.git ~/.config/nvim -
Launch Neovim:
nvim
Lazy.nvim will automatically install all plugins on first launch.
-
Install LSP servers and tools:
- Press
<space>+c+mto open Mason - Or run
:Masonand install required language servers
- Press
After installation, restart Neovim to ensure all plugins are properly loaded.
nvim/
βββ init.lua # Entry point
βββ lua/
β βββ config/ # Core configuration
β β βββ autocmds.lua # Auto commands
β β βββ keymaps.lua # Key mappings
β β βββ lazy.lua # Lazy.nvim setup
β β βββ options.lua # Vim options
β βββ lib/ # Shared libraries
β β βββ icons.lua # Icon definitions
β βββ plugins/ # Plugin configurations
β β βββ colorscheme.lua # Color themes
β β βββ lsp.lua # LSP configuration
β β βββ ui.lua # UI plugins
β β βββ editor.lua # Editor enhancements
β β βββ coding.lua # Coding tools
β β βββ ... # Other plugin configs
β βββ util/ # Utility functions
β β βββ debug.lua # Debug utilities
β βββ zpyankie/ # Custom modules
β βββ hsl.lua # HSL color utilities
β βββ lsp.lua # Custom LSP helpers
βββ stylua.toml # Stylua formatter config
βββ lazyvim.json # LazyVim extras config
βββ README.md # This file
| Key | Mode | Description |
|---|---|---|
<Space> |
Normal | Leader key |
jk |
Insert | Exit insert mode |
<Leader>w |
Normal | Save file |
<Leader>nh |
Normal | Clear search highlights |
| Key | Mode | Description |
|---|---|---|
sh/sj/sk/sl |
Normal | Navigate between splits |
ss |
Normal | Horizontal split |
sv |
Normal | Vertical split |
sq |
Normal | Close split |
<Tab> |
Normal | Next tab |
<S-Tab> |
Normal | Previous tab |
te |
Normal | New tab |
tq |
Normal | Close tab |
| Key | Mode | Description |
|---|---|---|
<Leader>p |
Normal/Visual | Paste from yank register |
<Leader>d |
Normal/Visual | Delete without yanking |
<Leader>c |
Normal/Visual | Change without yanking |
<Alt-Up/Down> |
Normal/Insert/Visual | Move lines up/down |
+/- |
Normal | Increment/decrement number |
| Key | Mode | Description |
|---|---|---|
<C-w><arrows> |
Normal | Resize window |
<Leader>sm |
Normal | Maximize/minimize split (vim-maximizer) |
| Key | Mode | Description |
|---|---|---|
<C-j> |
Normal | Go to next diagnostic |
<Leader>r |
Normal | Replace hex with HSL (custom) |
<Leader>i |
Normal | Toggle inlay hints |
gd |
Normal | Go to definition |
gr |
Normal | Go to references |
K |
Normal | Hover documentation |
| Key | Mode | Description |
|---|---|---|
<Leader>gb |
Normal | Git blame |
<Leader>go |
Normal | Open in browser |
<Leader>gg |
Normal | LazyGit |
| Key | Mode | Description |
|---|---|---|
<Leader>ff |
Normal | Find files |
<Leader>fg |
Normal | Grep search |
<Leader>fb |
Normal | File browser |
s |
Normal/Visual | Flash jump |
S |
Normal/Visual | Flash treesitter |
This configuration includes multiple colorschemes:
- Solarized Osaka (default) - Modern Solarized theme
- Ayu - Simple, bright, and elegant
- Night Owl - Theme for the night owls
- Oh Lucy - Warm and elegant
- Horizon - Dark theme with bright colors
- Retro Theme - Nostalgic retro vibes
Switch colorschemes with: :colorscheme <name>
Create a new file in lua/plugins/ following this structure:
return {
"author/plugin-name",
event = "VeryLazy", -- or other lazy-loading events
dependencies = {
-- plugin dependencies
},
opts = {
-- plugin options
},
config = function()
-- plugin configuration
end,
keys = {
-- plugin keymaps
},
}Edit lua/config/keymaps.lua to add or modify key mappings:
local keymap = vim.keymap
local opts = { noremap = true, silent = true }
keymap.set("n", "<your-key>", "<your-command>", opts)Modify lua/config/options.lua to change Vim options:
vim.opt.option_name = value- JavaScript/TypeScript (tsserver, eslint, prettier)
- Lua (lua_ls, stylua)
- Go (gopls)
- C/C++ (clangd, clang-format)
- Java (jdtls)
- Rust (rust-analyzer)
- Python (pyright)
- HTML/CSS (html, cssls, emmet_ls)
- Tailwind CSS (tailwindcss)
- Open Mason:
<Space>cm - Install required LSP server
- Or add to
lua/plugins/lsp.lua:
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"your-lsp-server",
"your-formatter",
"your-linter",
})
end- LazyVim - Base configuration
- lazy.nvim - Plugin manager
- nvim-lspconfig - LSP configuration
- nvim-treesitter - Syntax highlighting
- noice.nvim - Better UI for messages and cmdline
- bufferline.nvim - Buffer/tab line
- lualine.nvim - Status line
- neo-tree.nvim - File explorer
- telescope.nvim - Fuzzy finder
- flash.nvim - Enhanced navigation
- which-key.nvim - Keymap popup
- auto-session - Session management
- copilot.vim - GitHub Copilot
- CopilotChat.nvim - Chat with Copilot
- blink.cmp - Completion engine
- nvim-autopairs - Auto pairs
# Clear cache and reinstall
rm -rf ~/.local/share/nvim
rm -rf ~/.cache/nvim
nvim- Check if LSP server is installed:
:Mason - Check LSP status:
:LspInfo - Check logs:
:messages
- Profile plugins:
:Lazy profile - Check startup time:
nvim --startuptime startup.log
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use Stylua for Lua formatting
- Follow modular structure: one plugin per file
- Add comments for complex configurations
- Keep files focused and DRY
This configuration is available under the MIT License. See LICENSE for details.
- LazyVim by folke
- Takuya Matsuyama for inspiration
- The amazing Neovim community
Made with β€οΈ and Neovim