This repository contains my personal Neovim (v0.11.3) configuration optimized for Java and Rust development. It leverages lazy.nvim for plugin management and includes language-specific LSP, debugging, testing, AI integration, and modern productivity tools.
Feel free to use this as a reference or starting point for your own Neovim setup!
Inspiration: This configuration was inspired by Melkeydev's Neovim repo, the YouTube talk "How I use Neovim in 2024", and LazyVim's language extras.
Don't know the keybindings? Just press <Space> and wait! The which-key popup shows all available commands organized by category.
- Press
<Space>?or<Space><Space>anytime to see all keybindings - Organized groups: Find, File Explorer, Split Windows, Tabs, Git, Code actions, and more
- See Quick Reference for complete list
- Java: Full jdtls LSP integration with debugging (DAP) and testing support
- Rust: rustaceanvim for advanced LSP features, crates.nvim for Cargo.toml management, codelldb debugger, and neotest integration
- AI Integration: Ollama, Gemini support for AI-assisted coding
- Smart Completion: nvim-cmp with LSP, buffer, path, and snippet sources
- UI Enhancements: Bufferline, lualine, colorschemes, indent guides
- Theme Switcher: Telescope-based theme picker with live preview and persistence (8 themes: tokyonight, ayu_dark, catppuccin, gruvbox, onedark, nord, nightfox, kanagawa)
- File Explorer: Nvim-tree with custom icons and keymaps
- Fuzzy Finder: Telescope for fast file and text search
- Terminal Integration: ToggleTerm for embedded terminals with Lazygit support
- Syntax Highlighting: Treesitter-based syntax highlighting (with LSP semantic tokens disabled for colorful highlighting)
- Plugin Management: Uses lazy.nvim for fast, lazy-loaded plugins
- Open a file:
nvim yourfile.rsornvim YourClass.java - Press
<Space>and wait to see all available keybindings - Essential keybindings:
<Space>ne- Toggle file explorer<Space>ff- Find files<Space>fs- Search in files<Space>ct- Change theme<Space>gg- Open LazygitCtrl+7- Toggle terminalgd- Go to definitionK- Show documentation<Space>ca- Code actions
See Quick Reference for complete keybinding list.
The configuration is organized in a modular structure:
lua/neovim4j/core/keymaps.lua- General keybindingslua/neovim4j/plugins/java.lua- Java-specific toolinglua/neovim4j/plugins/rust.lua- Rust-specific toolinglua/neovim4j/plugins/lsp/lspconfig.lua- General LSP configurationlua/neovim4j/plugins/which-key.lua- Keybinding reference popuplua/neovim4j/plugins/- Other plugin configurations
Note: The
neovim4jdirectory name is historical from when this was Java-focused. It now supports multiple languages.
