{"id":31333357,"url":"https://github.com/rrxxyz/nvim-minimal","last_synced_at":"2025-09-26T01:53:12.064Z","repository":{"id":307056454,"uuid":"1028160223","full_name":"rrxxyz/nvim-minimal","owner":"rrxxyz","description":"Neovim starter configuration for your preferred programming language, just switch a branch","archived":false,"fork":false,"pushed_at":"2025-09-19T14:50:09.000Z","size":163,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-19T16:25:44.520Z","etag":null,"topics":["android","c","cpp","get-started","lua","neovim","neovim-starter-kit","nvim","nvim-config","nvim-configuration","nvim-dotfiles","nvim-lua","python","starter-kit","vim","vimrc"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rrxxyz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-29T05:56:32.000Z","updated_at":"2025-09-19T14:48:42.000Z","dependencies_parsed_at":"2025-07-29T08:34:32.638Z","dependency_job_id":"702ec03e-4160-443c-aa12-a3427afeb1a0","html_url":"https://github.com/rrxxyz/nvim-minimal","commit_stats":null,"previous_names":["rizkirakasiwi/nvim-minimal","rrxxyz/nvim-minimal"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rrxxyz/nvim-minimal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrxxyz%2Fnvim-minimal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrxxyz%2Fnvim-minimal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrxxyz%2Fnvim-minimal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrxxyz%2Fnvim-minimal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rrxxyz","download_url":"https://codeload.github.com/rrxxyz/nvim-minimal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrxxyz%2Fnvim-minimal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277009874,"owners_count":25744543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-25T02:00:09.612Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","c","cpp","get-started","lua","neovim","neovim-starter-kit","nvim","nvim-config","nvim-configuration","nvim-dotfiles","nvim-lua","python","starter-kit","vim","vimrc"],"created_at":"2025-09-26T01:53:10.856Z","updated_at":"2025-09-26T01:53:12.058Z","avatar_url":"https://github.com/rrxxyz.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Neovim Starter Kit Configuration\n\n**A modular, language-agnostic Neovim configuration designed as a complete starter kit for any programming language.**\n\nThis isn't just another Neovim config - it's your foundation for building the perfect development environment for ANY programming language. With our branch-based architecture, you can easily switch between different language setups or create your own specialized configuration.\n\n## 🎯 Why Choose This Starter Kit?\n\n- **🔥 True Starter Kit Philosophy** - Minimal base with extensible examples\n- **🌳 Branch-Based Language Support** - Switch between language configurations instantly with NeoChange\n- **📚 Educational by Design** - Learn modern Neovim patterns and best practices\n- **⚡ Production Ready** - Battle-tested configurations used by real developers\n- **🛠️ Community Driven** - Contributions welcome for any programming language\n\n## 🌳 Branch Architecture \u0026 NeoChange Integration\n\nThis repository uses a powerful branch-based approach that lets you switch between different programming language configurations seamlessly:\n\n### Available Starter Configurations:\n\n- **`main`** - 🟢 **Pure Starter Base** - Lua-optimized foundation (Start here!)\n- **`ccpp-nvim`** - 🔷 **C/C++ Development** - Complete C/C++ development environment\n- **More coming soon!** - Community contributions for Python, Go, Rust, JavaScript, etc.\n\n### 🔄 Easy Branch Switching with NeoChange\n\n**NEW!** You can now switch between different language configurations instantly using **NeoChange**:\n\n```vim\n\" Switch to C/C++ development environment\n:NeoChange ccpp-nvim\n\n\" Switch back to minimal Lua base\n:NeoChange main\n\n\" NeoChange will automatically:\n\" - Switch git branches\n\" - Restart Neovim with new configuration\n\" - Handle plugin management seamlessly\n```\n\n*No more manual git commands or configuration headaches!*\n\n### Current Branch: Main (Basic Configuration)\n\nThis branch provides a minimal but functional Neovim setup with:\n- Essential plugins for modern editing\n- Sensible defaults that work out of the box\n- Clean, readable code you can easily understand and modify\n- A foundation you can build upon for your specific needs\n\n## What's Included\n\n### Core Features\n- **Plugin Management**: lazy.nvim for fast, lazy-loaded plugins\n- **LSP Support**: Basic LSP setup with lua_ls (easily extensible)\n- **Completion**: blink.cmp for modern completion experience\n- **Syntax Highlighting**: Tree-sitter for accurate highlighting\n- **File Navigation**: Telescope for fuzzy finding\n- **Git Integration**: Basic git signs and navigation\n- **Modern UI**: Clean theme with statusline\n\n### What Makes This Different\n- **Minimal by design** - Only essential plugins included\n- **Well-documented** - Every configuration choice is clear and commented\n- **Easily extensible** - Add language support, themes, or plugins without conflicts\n- **Educational** - Learn how each piece works together\n\n## Requirements\n\n- Neovim \u003e= 0.10.0\n- Git\n- A C compiler (for telescope-fzf-native)\n\n### Basic Tools (Auto-installed)\n\nMason will automatically install:\n- `lua-language-server` - For Neovim configuration editing\n- `stylua` - Lua code formatting\n\n*Note: This is intentionally minimal. Add more tools as you need them for your specific languages and workflows.*\n\n## Installation\n\n1. **Backup your existing configuration** (if any):\n   ```bash\n   mv ~/.config/nvim ~/.config/nvim.backup\n   ```\n\n2. **Clone this configuration**:\n   Linux:\n   ```bash\n   git clone https://github.com/rizkirakasiwi/nvim-minimal.git ~/.config/nvim\n   ```\n   Windows:\n   - powershell\n     ```bash\n     git clone https://github.com/rizkirakasiwi/nvim-minimal.git \"${env:LOCALAPPDATA}\\nvim\"\n     ```\n   - cmd\n     ```bash\n     git clone https://github.com/rizkirakasiwi/nvim-minimal.git \"%localappdata%\\nvim\"\n     ```\n\n4. **Switch to desired branch** (optional):\n   ```bash\n   cd ~/.config/nvim\n   git checkout ccpp-nvim  # For C/C++ + Lua support\n   # Or stay on main for Lua-only optimization\n   ```\n\n5. **Start Neovim**:\n   ```bash\n   nvim\n   ```\n\n6. **Let lazy.nvim install plugins** (this happens automatically on first run)\n\n## File Structure\n\n```\n~/.config/nvim/\n├── init.lua                    # Entry point\n├── lua/\n│   ├── config/\n│   │   ├── options.lua        # Vim options and settings\n│   │   ├── keymaps.lua        # Key mappings\n│   │   └── autocmds.lua       # Auto commands\n│   └── plugins/\n│       ├── lsp.lua            # LSP configuration\n│       ├── completion.lua     # Completion engine\n│       ├── editor.lua         # Core editing plugins\n│       ├── ui.lua             # UI enhancements\n│       └── debug.lua          # Debugging support\n├── CLAUDE.md                   # Claude Code instructions\n└── README.md                   # This file\n```\n\n## Key Bindings\n\n### General\n| Key | Action |\n|-----|--------|\n| `\u003cSpace\u003e` | Leader key |\n| `\u003cC-s\u003e` | Save file |\n| `\u003cEsc\u003e` | Clear search highlight |\n\n### Navigation\n| Key | Action |\n|-----|--------|\n| `\u003cC-h/j/k/l\u003e` | Navigate windows |\n| `\u003cS-h/l\u003e` | Navigate buffers |\n| `\u003cC-Up/Down/Left/Right\u003e` | Resize windows |\n\n### File Management\n| Key | Action |\n|-----|--------|\n| `\u003cSpace\u003ee` | Toggle file explorer |\n| `\u003cSpace\u003eff` | Find files |\n| `\u003cSpace\u003efg` | Find text (live grep) |\n| `\u003cSpace\u003efb` | Find buffers |\n| `\u003cSpace\u003efr` | Recent files |\n\n### LSP\n| Key | Action |\n|-----|--------|\n| `gd` | Go to definition |\n| `gD` | Go to declaration |\n| `gr` | Find references |\n| `gI` | Go to implementation |\n| `gt` | Go to type definition |\n| `K` | Hover documentation |\n| `\u003cSpace\u003eca` | Code actions |\n| `\u003cSpace\u003ecr` | Rename |\n| `\u003cSpace\u003ecf` | Format |\n\n### Diagnostics\n| Key | Action |\n|-----|--------|\n| `]d` | Next diagnostic |\n| `[d` | Previous diagnostic |\n| `\u003cSpace\u003ecd` | Document diagnostics |\n| `\u003cSpace\u003ecD` | Workspace diagnostics |\n| `\u003cSpace\u003exx` | Toggle Trouble |\n\n### Git\n| Key | Action |\n|-----|--------|\n| `]h` | Next git hunk |\n| `[h` | Previous git hunk |\n| `\u003cSpace\u003eghs` | Stage hunk |\n| `\u003cSpace\u003eghr` | Reset hunk |\n| `\u003cSpace\u003eghp` | Preview hunk |\n| `\u003cSpace\u003eghb` | Blame line |\n\n### Buffer Management\n| Key | Action |\n|-----|--------|\n| `\u003cSpace\u003ebd` | Delete buffer |\n| `\u003cSpace\u003ebb` | Switch to other buffer |\n| `\u003cSpace\u003ebp` | Toggle pin buffer |\n\n## Getting Started\n\n### For Beginners\n1. Use this configuration as-is to get familiar with modern Neovim\n2. Read through the configuration files to understand how everything works\n3. Gradually add customizations based on your needs\n\n### For Customization\n- **Add languages**: Check the `ccpp-nvim` branch for examples\n- **Change theme**: Modify `lua/plugins/ui.lua`\n- **Add plugins**: Create new files in `lua/plugins/`\n- **Modify keybinds**: Edit `lua/config/keymaps.lua`\n\n## Example Branches\n\n### ccpp-nvim Branch\nShows how to extend this base configuration with:\n- C/C++ language server (clangd)\n- Additional formatters and tools\n- Debugging support\n- More treesitter parsers\n\n### Your Own Branch\nConsider creating your own branch for your specific setup:\n```bash\ngit checkout -b my-config\n# Add your customizations\ngit add -A \u0026\u0026 git commit -m \"My personal config\"\n```\n\n## 🔄 Switching Between Configurations\n\n### Method 1: Using NeoChange (Recommended)\n```vim\n:NeoChange ccpp-nvim     \" Switch to C/C++ configuration\n:NeoChange main          \" Switch to base configuration\n```\n\n### Method 2: Manual Git Commands\n```bash\n# Switch to C/C++ + Lua configuration\ngit checkout ccpp-nvim\n\n# Switch back to Lua-only configuration  \ngit checkout main\n\n# After switching, restart Neovim to reload configuration\n```\n\n**Pro Tip:** Use NeoChange for seamless switching - it handles everything automatically!\n\n## Customization Guide\n\n### Philosophy: Start Small, Add What You Need\n\nThis configuration is intentionally minimal. Instead of removing features you don't want, you add only what you need.\n\n### Common Customizations\n\n#### Adding a New Language (e.g., Python)\n\n1. **Add LSP server** in `lua/plugins/lsp.lua`:\n   ```lua\n   ensure_installed = {\n     \"stylua\",\n     \"lua-language-server\",\n     \"pyright\", -- Add this\n   }\n   ```\n\n2. **Add server configuration**:\n   ```lua\n   servers = {\n     lua_ls = { ... },\n     pyright = {}, -- Add this\n   }\n   ```\n\n3. **Add treesitter** in `lua/plugins/editor.lua`:\n   ```lua\n   ensure_installed = {\n     \"lua\",\n     \"python\", -- Add this\n   }\n   ```\n\n4. **Add formatter** (optional):\n   ```lua\n   formatters_by_ft = {\n     lua = { \"stylua\" },\n     python = { \"black\" }, -- Add this\n   }\n   ```\n\n#### Adding More Plugins\n\nCreate a new file like `lua/plugins/my-additions.lua`:\n```lua\nreturn {\n  -- Your additional plugins here\n  {\n    \"your-plugin/name\",\n    config = function()\n      -- Plugin configuration\n    end,\n  },\n}\n```\n\n### Learning Resources\n\n- Read the `ccpp-nvim` branch to see a real extension example\n- Check each plugin's documentation for more configuration options\n- The lazy.nvim documentation explains the plugin specification format\n\n## Troubleshooting\n\n### LSP Not Working\n1. Check LSP status: `:LspInfo`\n2. Check Mason installations: `:Mason`\n3. Check logs: `:LspLog`\n\n### Performance Issues\n1. Check startup time: `nvim --startuptime startup.log`\n2. Profile plugins: `:Lazy profile`\n\n### Completion Not Working\n1. Check blink.cmp capabilities: `:lua print(vim.inspect(require('blink.cmp').get_lsp_capabilities()))`\n2. Restart LSP: `:LspRestart`\n\n### Branch-Specific Issues\n- Ensure you're on the correct branch: `git branch`\n- After switching branches, restart Neovim completely\n- Check branch-specific tool requirements\n\n## 🤝 Contributing to the Starter Kit\n\n**We need your help to make this the ultimate Neovim starter kit for ANY programming language!**\n\n### 🎯 Most Wanted Contributions\n\n**New Language Branches** - Help expand our starter kit ecosystem:\n- 🐍 **Python** (`python-nvim` branch) - Data science, web dev, automation\n- 🦀 **Rust** (`rust-nvim` branch) - Systems programming with rust-analyzer\n- 🐹 **Go** (`go-nvim` branch) - Cloud-native development\n- ⚡ **JavaScript/TypeScript** (`js-nvim` branch) - Modern web development\n- 🔷 **C#** (`csharp-nvim` branch) - .NET development\n- 🐘 **PHP** (`php-nvim` branch) - Web development\n- ☕ **Java** (`java-nvim` branch) - Enterprise development\n- And many more!\n\n### 📋 Contribution Guidelines\n\n#### For New Language Branches\n1. **Fork and create a new branch** from `main`\n2. **Add comprehensive language support** (LSP, formatters, debuggers)\n3. **Keep it production-ready** - real developers should be able to use it immediately\n4. **Document everything** - explain your choices and configurations\n5. **Test thoroughly** - ensure everything works out of the box\n\n#### For the Main Branch\n- **Keep it minimal** - Only essential features that benefit all users\n- **Improve documentation** - Help newcomers understand modern Neovim\n- **Fix bugs** - Ensure the foundation is rock-solid\n\n### 🚀 Quick Start for Contributors\n\n```bash\n# Create your language branch\ngit checkout main\ngit checkout -b python-nvim  # or your language\n\n# Add your configuration\n# Test thoroughly\n# Submit a PR with detailed description\n\n# Your branch becomes part of the starter kit ecosystem!\n```\n\n### 🌟 Recognition\n\nAll contributors get:\n- Recognition in README.md\n- Credit as branch maintainers  \n- Community appreciation for expanding the starter kit ecosystem\n\n## Inspiration\n\nThis configuration is inspired by:\n- [kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) - The educational approach\n- [LazyVim](https://github.com/LazyVim/LazyVim) - Modern plugin architecture\n- Community feedback and real-world usage patterns\n\n## License\n\nThis configuration is available under the MIT license. Feel free to use, modify, and share!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrxxyz%2Fnvim-minimal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frrxxyz%2Fnvim-minimal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrxxyz%2Fnvim-minimal/lists"}