A modern, well-structured Neovim configuration optimized for development productivity, featuring a clean plugin architecture and thoughtful keybindings designed for HHKB users.
- Plugin Management: Powered by lazy.nvim with lazy loading for fast startup
- Well-Structured Architecture: Modular configuration with clear separation of concerns
- HHKB Optimized: Keybindings specifically designed for Happy Hacking Keyboard users
- Modern UI: Full truecolor support with beautiful themes and smooth animations
- Game Development Focus: Special optimizations for Lua-based game development
- Remote Development: Built-in support for remote development workflows
- Intelligent Code Completion: Advanced completion with blink.cmp
- Smart Navigation: Fast file and symbol navigation with fzf-lua
- Git Integration: Comprehensive Git support with visual diff and conflict resolution
- Syntax Highlighting: Tree-sitter powered syntax highlighting with custom queries
- Code Folding: Intelligent folding with nvim-ufo
- Terminal Integration: Seamless terminal workflow with smart window management
Ensure you have Neovim 0.9+ installed:
nvim --version# Backup existing configuration (if any)
mv ~/.config/nvim ~/.config/nvim.backup
# Clone this configuration
git clone https://github.com/Zwlin98/nvim.git ~/.config/nvim
# Start Neovim (plugins will be installed automatically)
nvimRun the following command in Neovim to ensure everything is working correctly:
:checkhealthThe configuration includes automatic setup for the following language servers:
- clangd - C/C++ language support with advanced features
- gopls - Official Go language server
- lua-language-server - Lua with Neovim API support
- rust-analyzer - Rust language server
- pyright - Python static type checker
For enhanced functionality, consider installing:
- ripgrep - Fast text search (for grep functionality)
- fd - Fast file finder (alternative to find)
- git - Version control (for Git integrations)
- nodejs & npm - For additional language servers
~/.config/nvim/
โโโ init.lua # Entry point
โโโ lazy-lock.json # Plugin version lock file
โโโ after/ # After-load configurations
โ โโโ ftplugin/ # Filetype-specific settings
โโโ ftdetect/ # Custom filetype detection
โโโ indent/ # Custom indentation rules
โโโ lsp/ # Language server configurations
โ โโโ c.lua # C/C++ LSP setup
โ โโโ go.lua # Go LSP setup
โ โโโ lua.lua # Lua LSP setup
โ โโโ pyright.lua # Python LSP setup
โโโ lua/
โ โโโ basic.lua # Basic Neovim settings
โ โโโ keymaps.lua # Global keybindings
โ โโโ autocmds.lua # Auto commands
โ โโโ lsp.lua # LSP configuration
โ โโโ rikka.lua # Custom utility functions
โ โโโ plugins/ # Plugin configurations
โ โโโ common/ # General purpose plugins
โ โโโ git/ # Git-related plugins
โ โโโ theme/ # Color schemes and themes
โ โโโ treesitter/ # Syntax highlighting
โ โโโ ui/ # User interface plugins
โโโ syntax/ # Custom syntax files
- Space - Primary leader key
<M-e>- Find files with fuzzy search<M-r>- Switch between buffers<M-t>- Navigate tabs<M-p>- FzfLua builtin commandsgf- Go to file under cursor
<M-f>- Live grep in project<M-g>- Grep word under cursor<M-s>- Search current buffer lines?- Search word in current buffer
<M-c>- Close current window<M-x>- Close current tab
<M-z>- Jump list navigationgq- Document diagnostics
<C-h>- File commit history
- Primary: Nightfox theme with custom modifications
- Truecolor: Full 24-bit color support
- Consistent: Unified color palette across all UI elements
- Status Line: Custom lualine configuration with Git integration
- Tab Line: Custom tabby setup with buffer information
- File Explorer: Neo-tree with Git status indicators
- Notifications: Snacks.nvim for elegant notifications
Create a new file in lua/plugins/ and it will be automatically loaded:
-- lua/plugins/my-plugin.lua
return {
"author/plugin-name",
config = function()
-- Plugin configuration
end
}Add keybindings using the rikka helper:
local rikka = require("rikka")
rikka.setKeymap("n", "<leader>x", ":command<CR>", { desc = "Description" })Add new language servers in the lsp/ directory following the existing patterns.
:Lazy health " Check plugin health
:Lazy sync " Update plugins
:Lazy clean " Remove unused plugins:checkhealth " Comprehensive health checkThis configuration is open source and available under the MIT License.