{"id":48304407,"url":"https://github.com/elsonwu/nvim","last_synced_at":"2026-04-04T23:55:54.487Z","repository":{"id":72533191,"uuid":"245814391","full_name":"elsonwu/nvim","owner":"elsonwu","description":"Personal Vim configuration on macOS","archived":false,"fork":false,"pushed_at":"2026-04-03T11:50:08.000Z","size":191,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-03T16:35:36.611Z","etag":null,"topics":["nvim","vim","vim-configuration","vimrc"],"latest_commit_sha":null,"homepage":"https://github.com/elsonwu/nvim","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elsonwu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-03-08T12:56:17.000Z","updated_at":"2026-04-03T11:50:14.000Z","dependencies_parsed_at":"2024-06-26T16:57:28.802Z","dependency_job_id":"777ba777-ed77-4aba-9d54-b8eb90e82319","html_url":"https://github.com/elsonwu/nvim","commit_stats":null,"previous_names":["elsonwu/nvim"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/elsonwu/nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsonwu%2Fnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsonwu%2Fnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsonwu%2Fnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsonwu%2Fnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elsonwu","download_url":"https://codeload.github.com/elsonwu/nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsonwu%2Fnvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31419548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["nvim","vim","vim-configuration","vimrc"],"created_at":"2026-04-04T23:55:53.881Z","updated_at":"2026-04-04T23:55:54.479Z","avatar_url":"https://github.com/elsonwu.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neovim Configuration\n\nA lightweight, performance-optimized Neovim configuration for **code review**. Built with [lazy.nvim](https://github.com/folke/lazy.nvim) for fast startup and 14 carefully chosen plugins.\n\n**Leader key:** `\\` (backslash)\n\n## Plugins\n\n| Plugin | Purpose |\n|--------|---------|\n| [snacks.nvim](https://github.com/folke/snacks.nvim) | Dashboard, notifications, bigfile handling, indent guides |\n| [fzf-lua](https://github.com/ibhagwan/fzf-lua) | Fuzzy finder (files, grep, buffers, git) |\n| [flash.nvim](https://github.com/folke/flash.nvim) | Jump to any location by typing characters |\n| [nvim-tree](https://github.com/nvim-tree/nvim-tree.lua) | File explorer (floating window) |\n| [oil.nvim](https://github.com/stevearc/oil.nvim) | Edit filesystem like a buffer |\n| [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) | LSP client (go-to-definition, hover, diagnostics) |\n| [mason.nvim](https://github.com/williamboman/mason.nvim) | LSP server installer |\n| [mason-lspconfig](https://github.com/williamboman/mason-lspconfig.nvim) | Bridge between mason and lspconfig |\n| [lspsaga.nvim](https://github.com/nvimdev/lspsaga.nvim) | LSP UI (peek definition, finder, rename) |\n| [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) | Syntax highlighting and indentation |\n| [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) | Git signs in gutter, blame |\n| [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) | Statusline |\n| [dracula](https://github.com/Mofiqul/dracula.nvim) | Color scheme |\n| [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) | File type icons |\n\n### LSP Servers (auto-installed via Mason)\n\n- **vtsls** — TypeScript/JavaScript\n- **jdtls** — Java\n- **yamlls** — YAML\n- **lua_ls** — Lua\n- **eslint** — ESLint (auto-detects config presence)\n\n---\n\n## Key Mappings\n\n### Navigating Files\n\n| Key | Action |\n|-----|--------|\n| `\\wh` | Toggle file tree (NvimTree) |\n| `\\ff` | Find current file in tree |\n| `-` | Open parent directory (Oil) |\n| `\\sf` | Find files (respects .gitignore) |\n| `\\sF` | Find ALL files (includes gitignored) |\n| `\\sb` | Search open buffers |\n| `Ctrl-n` | Next buffer |\n| `Ctrl-p` | Previous buffer |\n| `\\ww` | Close current buffer (preserves layout) |\n\n### Searching Code\n\n| Key | Action |\n|-----|--------|\n| `\\ss` | Live grep (respects .gitignore) |\n| `\\sS` | Live grep ALL (includes gitignored) |\n| `\\sw` | Grep word under cursor |\n| `\\sr` | Resume last search |\n\nInside fzf-lua picker:\n- `Ctrl-d` / `Ctrl-u` — Scroll preview\n- `Ctrl-q` — Select all and send to quickfix\n\n### Understanding Code (LSP)\n\n| Key | Action |\n|-----|--------|\n| `gd` | Go to definition |\n| `K` | Hover documentation |\n| `\\h` | Peek definition (inline preview) |\n| `\\gt` | Peek type definition |\n| `\\gr` | Find references (Lspsaga finder) |\n| `\\rn` | Rename symbol |\n| `\\ca` | Code action |\n| `\\ge` | Buffer diagnostics |\n| `\\gE` | Workspace diagnostics |\n| `\\sd` | Document diagnostics (fzf-lua) |\n| `\\sD` | Workspace diagnostics (fzf-lua) |\n| `[d` / `]d` | Previous / next diagnostic |\n\n### Jumping Within a File\n\n| Key | Action |\n|-----|--------|\n| `s` | Flash jump — type characters to jump to any match |\n| `S` | Flash treesitter — select treesitter node |\n| `r` | Remote flash (operator-pending mode) |\n| `]]` | Jump to next LSP reference |\n| `[[` | Jump to previous LSP reference |\n\n### Git Context\n\n| Key | Action |\n|-----|--------|\n| `\\bb` | Git blame current line |\n| `\\gB` | Open file/repo in browser |\n| `\\sg` | Git status (fzf-lua) |\n| `\\sc` | Git commits (fzf-lua) |\n\n### General\n\n| Key | Action |\n|-----|--------|\n| `\\p` | Smart paste (disables syntax temporarily for speed) |\n| `\\sh` | Help tags |\n| `\\nn` | Notification history |\n| `\u003c` / `\u003e` (visual) | Indent and reselect |\n| `Ctrl-h/j/k/l` | Arrow keys in insert/command mode |\n| `gc` / `gcc` | Comment (built-in Neovim 0.10+) |\n\n### Dashboard (on startup)\n\n| Key | Action |\n|-----|--------|\n| `n` | New file |\n| `f` | Find file |\n| `g` | Live grep |\n| `r` | Recent files |\n| `c` | Edit config |\n| `L` | Open Lazy plugin manager |\n| `q` | Quit |\n\n---\n\n## Commands\n\n| Command | Action |\n|---------|--------|\n| `:Format` | Format file with LSP |\n| `:ReloadConfig` | Reload Neovim configuration |\n| `:Lazy` | Open plugin manager |\n| `:Mason` | Open LSP/tool installer |\n| `:TSInstall \u003clang\u003e` | Install treesitter parser |\n| `:TSUpdate` | Update all treesitter parsers |\n| `:Oil` | Open filesystem editor |\n\n---\n\n## Performance Features\n\n- **Lazy-loading**: Plugins load on demand via events, commands, or keybindings\n- **Large file handling**: snacks.bigfile disables heavy features for files \u003e256KB\n- **Treesitter guards**: Skips highlighting for files \u003e100KB or \u003e5000 lines\n- **LSP guards**: Auto-detaches LSP for files \u003e1MB\n- **LSP debouncing**: 150ms debounce on background requests (definitions/references are instant)\n- **Disabled built-in plugins**: 25+ unused Vim plugins disabled at startup\n- **Optimized search**: ripgrep for grep, fd for file finding\n- **UI minimalism**: No cursor line, no ruler, no showcmd for faster rendering\n\n---\n\n## File Structure\n\n```\n~/.config/nvim/\n  init.lua                          -- Entry point: lazy.nvim bootstrap\n  lua/\n    settings.lua                    -- All vim options (single source of truth)\n    keymappings.lua                 -- Global key mappings\n    performance.lua                 -- Runtime performance optimizations\n    startup-profile.lua             -- Startup timing\n    plugins/\n      dracula.lua                   -- Color scheme\n      flash.lua                     -- Quick jump motions\n      fzf-lua.lua                   -- Fuzzy finder\n      gitsigns.lua                  -- Git integration\n      lspsaga.lua                   -- LSP UI\n      lualine.lua                   -- Status line\n      mason.lua                     -- LSP installer\n      mason-lspconfig.lua           -- Mason + LSP bridge\n      nvim-lspconfig.lua            -- LSP configuration\n      nvim-tree.lua                 -- File explorer\n      nvim-treesitter.lua           -- Syntax highlighting\n      oil.lua                       -- Filesystem editing\n      snacks.lua                    -- Multi-module utility\n```\n\n---\n\n## Treesitter Parsers\n\nInstalled: typescript, javascript, tsx, json, yaml, lua, vim, vimdoc, markdown, swift, kotlin\n\nnvim-treesitter v1.0 requires the `tree-sitter` CLI to compile parsers. If `:TSInstall` hangs, compile manually:\n\n```sh\ncd /tmp \u0026\u0026 curl -sL \"https://github.com/\u003crepo\u003e/archive/\u003crevision\u003e.tar.gz\" | tar xz\ncd \u003cextracted-dir\u003e/\u003clocation\u003e \u0026\u0026 tree-sitter build -o parser.so\ncp parser.so ~/.local/share/nvim/site/parser/\u003clang\u003e.so\necho \"\u003crevision\u003e\" \u003e ~/.local/share/nvim/site/parser-info/\u003clang\u003e.revision\n```\n\nTo find repo/revision for a language: `:lua print(vim.inspect(require(\"nvim-treesitter.parsers\").\u003clang\u003e))`\n\n## Requirements\n\n- Neovim \u003e= 0.10\n- [ripgrep](https://github.com/BurntSushi/ripgrep) (`rg`) — for grep operations\n- [fd](https://github.com/sharkdp/fd) — for file finding\n- [fzf](https://github.com/junegunn/fzf) — for fuzzy finding\n- [tree-sitter](https://github.com/tree-sitter/tree-sitter) CLI (`brew install tree-sitter-cli`) — for compiling parsers\n- A [Nerd Font](https://www.nerdfonts.com/) — for icons\n- Node.js — for LSP servers\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felsonwu%2Fnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felsonwu%2Fnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felsonwu%2Fnvim/lists"}