{"id":50971298,"url":"https://github.com/iamvirul/nvim-config","last_synced_at":"2026-06-19T02:32:30.127Z","repository":{"id":351660633,"uuid":"1151416532","full_name":"iamvirul/nvim-config","owner":"iamvirul","description":"Personal Neovim configuration with Java LSP, file explorer, integrated terminal, and git integration. Designed for Neovim 0.11+.","archived":false,"fork":false,"pushed_at":"2026-04-15T23:07:39.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T01:14:32.169Z","etag":null,"topics":["lua","nvim","nvim-configs","vim"],"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/iamvirul.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2026-02-06T12:47:21.000Z","updated_at":"2026-04-15T23:07:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/iamvirul/nvim-config","commit_stats":null,"previous_names":["iamvirul/nvim-config"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/iamvirul/nvim-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamvirul%2Fnvim-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamvirul%2Fnvim-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamvirul%2Fnvim-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamvirul%2Fnvim-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamvirul","download_url":"https://codeload.github.com/iamvirul/nvim-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamvirul%2Fnvim-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34515405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"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":["lua","nvim","nvim-configs","vim"],"created_at":"2026-06-19T02:32:28.111Z","updated_at":"2026-06-19T02:32:30.117Z","avatar_url":"https://github.com/iamvirul.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neovim Config\n\nModular Neovim configuration with Java LSP, file explorer, integrated terminal, and git integration. Designed for Neovim 0.11+.\n\n## Requirements\n\n- Neovim \u003e= 0.11\n- Git\n- Java 21+ (for Java LSP)\n- A [Nerd Font](https://www.nerdfonts.com/) (for icons)\n- `ripgrep` (for Telescope live grep) - `brew install ripgrep`\n\n## Installation\n\n```bash\n# Clone to nvim config directory\ngit clone https://github.com/iamvirul/nvim-config.git ~/.config/nvim\n\n# Open Neovim - plugins install automatically on first launch\nnvim\n```\n\nOn first launch:\n1. Lazy.nvim will auto-install all plugins\n2. Mason will install `jdtls` (Java LSP) and `lua_ls` (Lua LSP)\n3. Treesitter parsers will be installed for supported languages\n\nRun `:Mason` to check LSP server status. Run `:Lazy` to check plugin status.\n\n## Plugins\n\n| Plugin | Purpose |\n|--------|---------|\n| lazy.nvim | Plugin manager |\n| catppuccin | Colorscheme |\n| telescope.nvim | Fuzzy finder (files, grep, git) |\n| neo-tree.nvim | File explorer sidebar |\n| nvim-treesitter | Syntax highlighting / parser installer |\n| mason.nvim | LSP server installer |\n| nvim-jdtls | Java LSP (Eclipse JDTLS) |\n| nvim-cmp | Autocompletion |\n| LuaSnip | Snippet engine |\n| toggleterm.nvim | Integrated terminal |\n| gitsigns.nvim | Git gutter signs |\n| vim-fugitive | Git commands |\n| git-blame.nvim | Inline git blame |\n\n## Keybindings\n\nLeader key: `Space`\n\n### File Explorer (Neo-tree)\n\n| Key | Action |\n|-----|--------|\n| `\u003cleader\u003ee` | Open file explorer (left sidebar) |\n| `\u003cleader\u003eE` | Open file explorer (float) |\n| `s` | Open file in horizontal split (in neo-tree) |\n| `v` | Open file in vertical split (in neo-tree) |\n\n### Telescope (Fuzzy Finder)\n\n| Key | Action |\n|-----|--------|\n| `\u003cleader\u003eff` / `Ctrl+p` | Find files |\n| `\u003cleader\u003efF` | Find files (current dir) |\n| `\u003cleader\u003efg` / `Ctrl+f` | Live grep |\n| `\u003cleader\u003efG` | Live grep (current dir) |\n| `\u003cleader\u003efs` | Grep string under cursor |\n| `\u003cleader\u003efb` | Open buffers |\n| `\u003cleader\u003efh` | Help tags |\n| `\u003cleader\u003efk` | Keymaps |\n| `\u003cleader\u003ef:` | Command history |\n| `\u003cleader\u003efe` | File browser (current dir) |\n| `\u003cleader\u003efE` | File browser (project root) |\n| `\u003cleader\u003efse` | File browser with split support |\n\n### LSP (all languages)\n\n| Key | Action |\n|-----|--------|\n| `gd` | Go to definition |\n| `gD` | Go to declaration |\n| `gi` | Go to implementation |\n| `gr` | Go to references |\n| `K` | Hover documentation |\n| `\u003cleader\u003ern` | Rename symbol |\n| `\u003cleader\u003eca` | Code action |\n| `\u003cleader\u003elf` | Format file |\n| `[d` / `]d` | Previous / next diagnostic |\n| `\u003cleader\u003eld` | Show diagnostic float |\n\n### Java-specific (in .java files)\n\n| Key | Action |\n|-----|--------|\n| `\u003cleader\u003ejo` | Organize imports |\n| `\u003cleader\u003ejv` | Extract variable |\n| `\u003cleader\u003ejc` | Extract constant |\n| `\u003cleader\u003ejm` | Extract method (visual mode) |\n\n### Terminal (Toggleterm)\n\n| Key | Action |\n|-----|--------|\n| `Ctrl+\\` | Toggle terminal |\n| `\u003cleader\u003eth` | Terminal (horizontal split) |\n| `\u003cleader\u003etv` | Terminal (vertical split) |\n| `\u003cleader\u003etf` | Terminal (floating) |\n| `\u003cleader\u003ett` | Terminal (new tab) |\n| `\u003cleader\u003et1/t2/t3/t4` | Toggle terminal 1/2/3/4 |\n| `\u003cleader\u003eta` | Toggle all terminals |\n| `Esc` | Exit terminal insert mode |\n| `Ctrl+h/j/k/l` | Navigate between terminal and editor splits |\n| `Ctrl+Up/Down` | Resize terminal height (in terminal mode) |\n| `Ctrl+Left/Right` | Resize terminal width (in terminal mode) |\n\n### Window Navigation\n\n| Key | Action |\n|-----|--------|\n| `Ctrl+h/j/k/l` | Move between splits |\n| `Ctrl+Up/Down` | Resize height |\n| `Ctrl+Left/Right` | Resize width |\n\n### Git\n\n| Key | Action |\n|-----|--------|\n| `\u003cleader\u003egs` | Git status |\n| `\u003cleader\u003egc` | Git commit |\n| `\u003cleader\u003egp` | Git push |\n| `\u003cleader\u003egP` | Git pull |\n| `\u003cleader\u003egd` | Git diff |\n| `\u003cleader\u003egb` | Git blame |\n| `\u003cleader\u003ehs` | Stage hunk |\n| `\u003cleader\u003ehr` | Reset hunk |\n| `\u003cleader\u003ehp` | Preview hunk |\n| `\u003cleader\u003etb` | Toggle line blame |\n| `]c` / `[c` | Next / previous hunk |\n\n### Autocomplete (nvim-cmp)\n\n| Key | Action |\n|-----|--------|\n| `Tab` / `Shift+Tab` | Navigate completion items |\n| `Enter` | Confirm selection |\n| `Ctrl+Space` | Trigger completion |\n| `Ctrl+e` | Close completion menu |\n| `Ctrl+b` / `Ctrl+f` | Scroll docs |\n\n### Directory / Workspace\n\n| Key | Action |\n|-----|--------|\n| `\u003cleader\u003ecd` | Change to current file's directory |\n| `\u003cleader\u003ecs` | Split + change to file's dir |\n| `\u003cleader\u003ecv` | Vsplit + change to file's dir |\n| `\u003cleader\u003epwd` | Print working directory |\n| `\u003cleader\u003enf` | New file |\n| `\u003cleader\u003end` | New directory |\n| `\u003cleader\u003evc` | Open this nvim config |\n| `\u003cleader\u003ews` | Save workspace layout |\n| `\u003cleader\u003ewr` | Restore workspace layout |\n\n## Setup on a New Device\n\n### One-liner (curl from GitHub)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/iamvirul/nvim-config/main/install.sh | bash\n```\n\nThis installs Neovim, dependencies (ripgrep, Java 21, Nerd Font), and clones the config. Supports macOS and Linux (Debian/Ubuntu, Fedora, Arch).\n\n### Manual setup\n\n```bash\n# 1. Install Neovim 0.11+\nbrew install neovim    # macOS\n# or see https://github.com/neovim/neovim/releases\n\n# 2. Install dependencies\nbrew install ripgrep\n\n# 3. Install Java (for Java LSP)\nbrew install openjdk@21\n\n# 4. Install a Nerd Font\nbrew install --cask font-jetbrains-mono-nerd-font\n\n# 5. Clone config\ngit clone https://github.com/iamvirul/nvim-config.git ~/.config/nvim\n\n# 6. Launch Neovim (plugins auto-install)\nnvim\n```\n\n## Structure\n\n```\n~/.config/nvim/\n  init.lua                     -- Entry point (leader, lazy bootstrap, module loads)\n  lazy-lock.json               -- Plugin version lockfile (committed for reproducibility)\n  lua/\n    config/\n      options.lua              -- Basic settings (tabs, numbers, splits, etc.)\n      keymaps.lua              -- General keymaps (window nav, directory ops, workspace)\n      autocmds.lua             -- Autocommands (DirChanged, filetype settings)\n    plugins/\n      colorscheme.lua          -- Catppuccin\n      telescope.lua            -- Telescope + file-browser + fzf-native + github ext\n      neo-tree.lua             -- Neo-tree file explorer\n      git.lua                  -- Fugitive + gitsigns + git-blame\n      treesitter.lua           -- Treesitter parser installer\n      lsp.lua                  -- Mason + mason-lspconfig + native LSP config\n      completion.lua           -- nvim-cmp + LuaSnip + sources\n      terminal.lua             -- Toggleterm\n      java.lua                 -- nvim-jdtls + FileType autocmd for Java\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamvirul%2Fnvim-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamvirul%2Fnvim-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamvirul%2Fnvim-config/lists"}