A comprehensive Neovim configuration focused on DevOps and development workflows. Includes LSP support for multiple languages (Python, Go, Rust, JavaScript/TypeScript, Terraform, Docker, etc.), powerful fuzzy finding with Telescope, Git integration with visual diffs and blame, GitHub Copilot support, syntax highlighting, code formatting, and a clean UI with statusline and themes.
- Setup
- Learning Keybindings
- Plugin Management
- Development & Contributing
- File Structure
- Quality Assurance
- Troubleshooting
- Neovim 0.9+
- Git
- Node.js
- luacheck (for development/contributing)
# Backup existing config
mv ~/.config/nvim ~/.config/nvim.backup
# Clone and start
git clone https://github.com/scbogdan/neovim.git ~/.config/nvim
nvimFirst launch will auto-install everything.
If you plan to use markdown preview, run this after installation:
cd ~/.local/share/nvim/lazy/markdown-preview.nvim && npm installLeader key: <Space>
Press <Space> and wait - Which-Key will show you all available commands organized by category. You can also explore other key combinations like:
g- Go to commands (definitions, references, etc.)]and[- Navigation (next/previous diagnostics, hunks, etc.)<C-t>- Terminal commands<and>- Indentation in visual modez- Folding and view commands
This is the best way to discover what's available and learn the keybindings.
Edit files in lua/plugins/, add:
{
"author/plugin-name",
config = function()
require("plugin-name").setup()
end,
}Delete the plugin block from its file and restart Neovim.
:Lazy- Manage plugins:Lazy sync- Update all:Mason- Manage LSP servers
This project uses professional development practices with automated quality checks.
See CONTRIBUTING.md for detailed contribution guidelines.
- Lua Linting: All Lua code is checked with luacheck
- Pre-commit Hooks: Code is automatically linted before commits
- CI/CD: GitHub Actions run luacheck on all pull requests
- Conventional Commits: Enforced via commitlint for consistent changelog generation
# Lint all Lua files
pnpm lint:lua
# Run all linters
pnpm lint
# Check commit message format
pnpm commitlint# Install luacheck
brew install luacheck # macOS
sudo apt-get install luacheck # Ubuntu/Debian
# Install dependencies
pnpm install
# Test setup
pnpm lint:lua- All commits must follow conventional commit format
- Pre-commit hooks ensure code quality
- Semantic versioning with automated releases
- Changelog automatically updated
lua/plugins/
├── lsp.lua # Language servers
├── telescope.lua # Fuzzy finder
├── git.lua # Git integration
├── ui.lua # Themes & statusline
├── editor.lua # Editor enhancements
├── format.lua # Code formatting
└── core.lua # Essential dependencies
.github/
├── workflows/
│ ├── lua.yaml # Lua linting CI
│ └── semantic-release.yaml # Automated releases
├── CHANGELOG.md # Auto-generated changelog
├── dependabot.yaml # Dependency updates
└── PULL_REQUEST_TEMPLATE.md
.husky/ # Git hooks
├── commit-msg # Commit message validation
└── pre-commit # Pre-commit linting
Configuration:
├── .luacheckrc # Lua linting rules
├── commitlint.config.ts # Commit message rules
├── lint-staged.config.ts # Pre-commit hook config
├── .releaserc.json # Semantic release config
└── CONTRIBUTING.md # Contribution guidelines
This configuration maintains high code quality through:
- Automated Testing: luacheck validates all Lua syntax and style
- Git Hooks: Pre-commit hooks prevent bad code from being committed
- Continuous Integration: GitHub Actions ensure all PRs pass quality checks
- Dependency Management: Dependabot keeps dependencies updated
- Semantic Versioning: Automated releases with proper version bumping
- Documentation: Comprehensive guides and inline code documentation
In init.lua or plugin config files:
vim.keymap.set("n", "<leader>my", "<cmd>MyCommand<CR>", { desc = "My command" }):checkhealth- Check setup:LspInfo- Check language servers:Lazy profile- Check performancepnpm lint:lua- Check Lua code quality locally
We welcome contributions! Please see CONTRIBUTING.md for:
- Development setup instructions
- Code style guidelines
- Testing procedures
- Pull request process
- Issue reporting guidelines