A modern, feature-rich Neovim configuration optimized for Java development and full-stack programming. Built with LazyVim, featuring LSP integration, debugging capabilities, and a curated plugin ecosystem for maximum productivity.
- π LazyVim Integration - Modern plugin management with lazy loading
- β Java Excellence - Full JDTLS support with Spring Boot, Maven/Gradle integration
- π§ LSP & DAP - Language servers and debugging for multiple languages
- π¨ Beautiful UI - Carefully selected themes and UI enhancements
- β‘ Performance - Optimized startup times and memory usage
- π Learning Friendly - Comprehensive keymaps guide included
- LazyVim Base - Modern Neovim distribution with batteries included
- 50+ Plugins - Curated selection for productivity and development
- Multi-Language Support - Java, TypeScript, Python, Lua, and more
- Custom Keymaps - Intuitive shortcuts with comprehensive learning guide
- JDTLS Integration - Full Java language server with Eclipse quality
- Spring Boot Tools - Dedicated support for Spring Boot development
- Build Systems - Maven and Gradle integration with one-click execution
- Testing Framework - LazyVim's built-in testing integration for JUnit
- Code Actions - LazyVim's LSP-powered refactoring and quick fixes
- Database Tools - Flyway migration support and database integration
- LSP Integration - Intelligent code completion and diagnostics
- DAP Debugging - Integrated debugging with breakpoints and variable inspection
- Git Integration - Lazygit, inline blame, and diff viewing
- Code Formatting - Prettier integration with automatic formatting on save
- Snippet Support - Code snippets for faster development
Ubuntu/Debian:
# Required
sudo apt update
sudo apt install neovim git stow
macOS (Homebrew):
# Required
brew install neovim git stow
Arch Linux:
# Required
sudo pacman -S neovim git stow
# Clone repository (you can choose any directory)
git clone https://github.com/Patrickbpds/my-dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# Alternative: clone to current directory
# git clone https://github.com/Patrickbpds/my-dotfiles.git .
# cd my-dotfiles
# Backup existing config (recommended)
mkdir -p ~/.config-backup
cp -r ~/.config/nvim ~/.config-backup/ 2>/dev/null || true
# Install configuration
stow -v -R -t ~/.config nvim
# Install plugins (first run will take longer)
nvim --headless -c 'Lazy sync' +qaIf you prefer not to use GNU Stow:
# Clone and copy files
git clone https://github.com/Patrickbpds/my-dotfiles.git ~/.dotfiles
cp -r ~/.dotfiles/nvim ~/.config/
# Install plugins
nvim
# Run :Lazy sync inside Neovim# Open Neovim
nvim
# Install LSP servers (inside Neovim)
:MasonInstall java-language-server jdtls typescript-language-server
# Verify installation
:checkhealth
:Lazy sync- β‘ Fast Startup - Optimized lazy loading keeps startup under 100ms
- π¨ Beautiful UI - Carefully crafted themes and modern interface
- π± Responsive - Works seamlessly on different screen sizes
- π Auto Updates - Plugins update automatically in background
- β Multi-language Support - Java, TypeScript, Python, Lua, Go, Rust
- β Intelligent Completion - Context-aware code suggestions
- β Real-time Diagnostics - Instant error checking and warnings
- β Code Actions - Quick fixes and refactoring tools
- β JDTLS Server - Full Eclipse-quality Java support with LazyVim integration
- π Spring Boot - Dedicated Spring Boot development tools
- π¨ Build Integration - Maven/Gradle with one-click execution
- π§ͺ Testing - LazyVim's built-in testing framework for seamless JUnit integration
- βοΈ Code Actions - LazyVim's LSP-powered refactoring and code actions
- ποΈ Database Tools - Flyway migrations and database integration
- π DAP Integration - Debug directly in Neovim
- π΄ Breakpoints - Visual breakpoint management
- π Variable Inspection - Watch expressions and variables
- π§ͺ Test Runner - Integrated testing framework
- π Themes - Multiple themes with automatic switching
- π Status Line - Rich status bar with LSP and Git info
- π File Explorer - Tree-style navigation with Git integration
- π Fuzzy Finding - Fast file and content search
- π Session Management - Automatic workspace saving
π Complete Keymaps Learning Guide - Interactive guide to master all shortcuts
π― Pro Tips:
- Use
<leader>?to see all available keymaps - Press
<leader>and wait to see WhichKey hints - Check
:help lazyvimfor LazyVim documentation
Edit files directly in the stow directories:
# Edit Neovim config
vim nvim/lua/config/options.lua
# Restow to apply changes
stow -R -t ~/.config nvim# Create new package directory
mkdir -p mypackage/.config/myapp
# Add your config files
cp ~/.config/myapp/config mypackage/.config/myapp/
# Stow the new package
stow mypackagemy-dotfiles/
βββ π nvim/ # π Complete Neovim configuration
β βββ π init.lua # π Main initialization file
β βββ π lazyvim.json # βοΈ LazyVim configuration
β βββ π lazy-lock.json # π Plugin lockfile
β βββ π stylua.toml # π
Lua formatter config
β βββ π .neoconf.json # π§ Neoconf settings
β βββ π .gitignore # π« Git ignore rules
β βββ π lua/
β βββ π config/ # βοΈ Core configurations
β β βββ π autocmds.lua # π€ Auto commands
β β βββ π keymaps.lua # β¨οΈ Key mappings
β β βββ π lazy.lua # π¦ Plugin manager
β β βββ π options.lua # π§ Neovim options
β β βββ π lazyvim.json # βοΈ LazyVim config
β βββ π lang_servers/ # π£οΈ Language server configs
β β βββ π intellij-java-google-style.xml
β βββ π plugins/ # π Plugin configurations
β βββ π java/ # β Java-specific plugins
β β βββ π build-run.lua
β β βββ π dependency-management.lua
β β βββ π java.lua
β β βββ π java-utils.lua
β β βββ π keymaps-java.lua
β β βββ π logs.lua
β β βββ π migrations.lua
β β βββ π profiles-management.lua
β β βββ π templates/
β β βββ π crud-files.lua
β β βββ π java-files.lua
β β βββ π springboot-files.lua
β βββ π autopairs.lua # π Auto pairs
β βββ π better-ts-errors.lua # π¨ Better TS errors
β βββ π cmp.lua # π‘ Completion
β βββ π comment.lua # π¬ Commenting
β βββ π dap.lua # π Debug adapter
β βββ π git.lua # π Git integration
β βββ π grapple.lua # πͺ Fast navigation
β βββ π harpoon.lua # β File marking
β βββ π lint.lua # π Linting
β βββ π lsp.lua # π£οΈ Language server
β βββ π lualine.lua # π Status line
β βββ π neo-tree.lua # π File explorer
β βββ π session.lua # πΎ Session management
β βββ π snippets.lua # π Code snippets
β βββ π theme.lua # π¨ Color scheme
β βββ π ui.lua # πΌοΈ UI enhancements
β βββ π wakatime.lua # β±οΈ Time tracking
β βββ π which-key.lua # β Key hinting
βββ π KEYMAPS_LEARNING.md # π Keymaps learning guide
βββ π README.md # π This documentation
nvim/lua/config/- Core Neovim settings and LazyVim configurationnvim/lua/plugins/- All plugin configurations and customizationsnvim/lua/plugins/java/- Java-specific tools and integrationsKEYMAPS_LEARNING.md- Interactive guide to learn all keyboard shortcuts
# Install/link configurations
stow -t ~/.config nvim
# Remove/unlink configurations
stow -D -t ~/.config nvim
# Reinstall (useful after editing)
stow -R -t ~/.config nvim
# Simulate actions (dry run)
stow -n -t ~/.config nvim
# Verbose output
stow -v -t ~/.config nvim# Check for broken symlinks
find ~ -xtype l -print
# Update from git
git pull origin main
# Restow after updates
stow -R -t ~/.config nvim
# Clean broken symlinks
find ~ -maxdepth 1 -name ".*" -type l ! -exec test -e {} \; -delete 2>/dev/null || true# Check LSP status
:LspInfo
# Install missing servers
:MasonInstall java-language-server jdtls typescript-language-server
# Restart LSP
:LspRestart# Check JDTLS status
:JdtShowLogs
# Refresh project
:JdtRefresh
# Recompile
:JdtCompile# Sync all plugins
:Lazy sync
# Clear plugin cache
:Lazy clean
# Reinstall all plugins
:Lazy restore# Check health
:checkhealth
# Profile startup time
:StartupTime
# Disable heavy plugins temporarily
:LazyExtras# Reload theme
:colorscheme <theme-name>
# Check syntax highlighting
:syntax on
# Reload UI
:lua require('lazy').reload('ui')# Start Neovim in debug mode
NVIM_DEBUG=1 nvim
# Check LazyVim debug info
:Lazy profile# LSP logs
~/.local/state/nvim/lsp.log
# LazyVim logs
~/.local/state/nvim/lazy.log
# Neovim logs
~/.local/state/nvim/log# Neovim version and build
nvim --version
# Check dependencies
:checkhealth provider
# Plugin status
:Lazy- Check the logs - Most issues are logged with detailed error messages
- Update everything - Run
:Lazy syncand restart Neovim - Minimal config - Test with
nvim --cleanto isolate issues - Community - Check Neovim Discourse or LazyVim issues
If everything breaks:
# Remove configuration
rm -rf ~/.config/nvim
# Restore backup
cp -r ~/.config-backup/nvim ~/.config/
# Reinstall
stow -R .configContributions are welcome! Please feel free to:
- π Report Issues - Found a bug? Let me know!
- π‘ Suggest Features - Have an idea? Share it!
- π§ Submit PRs - Want to contribute code? Awesome!
- π Improve Docs - Help make the documentation better
- LazyVim Community - For the incredible ecosystem
- Neovim Community - For pushing the boundaries
- Dotfile Enthusiasts - For sharing knowledge and inspiration
"The best tools are invisible. They get out of your way and let you focus on what matters - creating amazing software."
- π GitHub Issues: Issues
- π¬ Discussions: Discussions
β Star this repo if you find it useful!


