{"id":35514356,"url":"https://github.com/neg4n/the-golden-vim","last_synced_at":"2026-01-03T22:03:54.677Z","repository":{"id":320050640,"uuid":"857748233","full_name":"neg4n/the-golden-vim","owner":"neg4n","description":"A tribute to the era before bloat. Vim, reinterpreted. Distraction removed.","archived":false,"fork":false,"pushed_at":"2025-10-25T13:54:49.000Z","size":76,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-25T15:24:17.663Z","etag":null,"topics":["neovim","vim"],"latest_commit_sha":null,"homepage":"https://neg4n.dev/","language":"Lua","has_issues":false,"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/neg4n.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":"2024-09-15T14:07:24.000Z","updated_at":"2025-10-25T13:56:13.000Z","dependencies_parsed_at":"2025-10-25T15:24:18.004Z","dependency_job_id":null,"html_url":"https://github.com/neg4n/the-golden-vim","commit_stats":null,"previous_names":["neg4n/notepad-_config","neg4n/the-golden-vim"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/neg4n/the-golden-vim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neg4n%2Fthe-golden-vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neg4n%2Fthe-golden-vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neg4n%2Fthe-golden-vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neg4n%2Fthe-golden-vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neg4n","download_url":"https://codeload.github.com/neg4n/the-golden-vim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neg4n%2Fthe-golden-vim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28194898,"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":"2026-01-03T02:00:06.471Z","response_time":75,"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":["neovim","vim"],"created_at":"2026-01-03T22:03:21.178Z","updated_at":"2026-01-03T22:03:54.669Z","avatar_url":"https://github.com/neg4n.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n\nhttps://github.com/user-attachments/assets/835d7d6e-80fb-4d4e-ab8d-cbbadfa78f69\n\n\nA tribute to the era before bloat. Vim, reinterpreted.\n\n\u003cimg width=\"321\" height=\"79\" alt=\"Banner\" align=\"right\" src=\"https://github.com/user-attachments/assets/e011a56b-4d03-4a18-b73b-e572e8064956\" /\u003e\n\n\n\n### Features\n\n- Written entirely in [Lua][lua] - the language that stays out of your way.\n- Uncomplicated. No lazy-loading nonsense or dependency pyramids that break on edit. In modern \"Vim frameworks\", even the smallest change can trigger an avalanche.\n- Built on NeoVim v0.11 and the [`mini.nvim`](https://github.com/echasnovski/mini.nvim) ecosystem. Because oldschool doesn't mean outdated.\n- Enhanced with [LuaFun][luafun] - for `.map()`, `.filter()`, and other table operations, familiar to anyone fluent in functional programming or JavaScript.\n- No dopamine-driven plugins. Only what matters for daily work.\n- Uses the classic `murphy` theme - already included in Vim and Neovim. Old colors, new context.\n- Straightforward, top-to-bottom configuration. No maze of directories or 999 files for 999 plugins.\n- Relies on proven tools that already do the job (`rg`, `fzf`, `bat`, and friends). No pointless Lua re-implementations \"just because\".\n- Smart, but never intrusive - LSPs, diagnostics, formatters, Git integration.\n- Packed with QoL features: enhanced `:Bdelete` commands, synced terminal colors (`MiniMisc.sync_termbg`), scoped live [`ripgrep`][ripgrep] with [`fzf`][fzf], smarter closing of [`oil`][oil] buffers, and more.\n- No attempts to imitate a GUI IDE. No file tree, no icons, no floating clutter.\n- Focused and reliable - works in any stack, any size. Tested inside large monorepos.\n\n#### Customization\n\nThe codebase is small enough to understand in one sitting, and flexible enough to rebuild from scratch.  \nFork it, strip it down, or change it into something unrecognizable - it’s still yours.\nIf you wish to use different LSP servers or formatters, search codebase for `conform` and `blink` keywords.\n\n## Installation\n\n### NeoVim\n\nIf you're starting with Vim or you're getting back after the years, please install the `0.11` version through [`bob`][bob] _(a NeoVim version manager)_. This brilliant utility will save you a lot of time and struggle to get started.\n\nOnce you have [`bob`][bob] installed on your machine run `bob install 0.11` in a terminal of your choice.\n\n### Cloning The Golden Vim\n\nClone the configuration into your NeoVim config directory\n\n- Via `git`\n    ```bash\n    git clone https://github.com/neg4n/the-golden-vim ~/.config/nvim/ \u0026\u0026 cd ~/.config/nvim/\n    ```\n- Via [GitHub CLI][gh] (`gh`)\n    ```bash\n    gh repo clone neg4n/the-golden-vim ~/.config/nvim \u0026\u0026 cd ~/.config/nvim\n    ```\n\n\u003e [!IMPORTANT]\n\u003e **It is strongly encouraged to back up your previous configuration to avoid data loss. If `~/.config/nvim/` is empty directory - you're safe to clone. Otherwise - do a backup.**\n\n### Other prerequisities before running \n\n- [fzf][fzf] `0.60.3` \n- [ripgrep][ripgrep] `14.1.1`\n- [bat][bat] `0.26.0`\n- [fd][fd] `10.2.0`\n- [lstr][lstr] `lstr 0.2.1`\n- [lua][lua] `5.1 (LuaJIT 2.1.17x)` \n\n\u003e [!NOTE]\n\u003e The version numbers near the packages do not mean that exactly one particular version is required. The Golden Vim was developed using the mentioned software with these versions and is guaranteed to work there properly. It is extremely likely it will work on other versions as well (depends on the semantic or any local versioning system).\n\n### Optional enhancements\n\nThe Golden Vim was created with mind of [Ghostty][ghostty] terminal emulator and [Berkeley Mono][berkeleymono] typeface by [U.S. Graphics Company][usgraphics]. It'll work flawlessly in other setups but if you wish to replicate the look from the media resources - use these!\n\nThe port of `murphy` theme for [bat][bat] (previews) can be found on the [`murphy.tmTheme`](https://github.com/neg4n/murphy.tmTheme) repository\n\n### Keymaps and bindings\n\n#### Short intro\n\n- Leader key is `Space`.\n- Normal `\u003cleader\u003en` – open MiniNotify history.\n- Normal `-` – toggle the Oil file explorer in a float.\n- Normal `gd` – jump to LSP definition.\n- Normal `gra` - LSP code action.\n- Normal `grn` - LSP rename.\n- Normal `\u003cleader\u003er` – format the current buffer asynchronously.\n- Normal `\u003cleader\u003eld` – fzf-lua diagnostics picker with yank support.\n- Normal `\u003cleader\u003ef` – fzf-lua files.\n- Normal `\u003cleader\u003es` – fzf-lua document symbols.\n- Normal `\u003cleader\u003eb` – fzf-lua buffers.\n- Normal `\u003cleader\u003e/` – scoped live ripgrep.\n- Normal `\u003cleader\u003e?` – pick directories, then live ripgrep.\n- Normal `\u003cleader\u003eg` – fzf-lua Git diff view.\n- Normal `\u003cleader\u003evh` – fzf-lua help tags.\n- Oil buffer `q` / `\u003cEsc\u003e` – close the floating Oil window.\n\n#### More \n\nFor the Git integration, type `:Git \u003cany-command\u003e` and explore by yourself. Refer to the [`mini.git`](https://github.com/nvim-mini/mini-git) docs eventually. The Golden Vim works best if you are used to manage Git via terminal _(it also respects your git aliases)_ and GitHub via [GitHub CLI](https://cli.github.com)\n\n## Further customization\n\nHere are some utilities that were in The Golden Vim originally but were removed due to clean up purposes. They may be useful if you want to customize the configuration.\n\n\u003csummary\u003e\n\nSmart path shortening function for better visual displays. \n\n\u003cdetails\u003e\n\n```lua\nF.path = (function()\n  local FP = {}\n\n  ---@class ShortenOpts\n  ---@field keep_last integer?  -- how many last segments to keep unshortened (default 1)\n  ---@field preserve_tilde boolean? -- keep leading \"~\" untouched (default true)\n  ---@field preserve_dot_segments boolean? -- keep \".\" and \"..\" untouched (default true)\n\n  ---@param path string\n  ---@param opts ShortenOpts|nil\n  ---@return string\n  FP.shorten = function(path, opts)\n    assert(type(path) == \"string\", \"path must be a string\")\n    -- Add more validation here (opts)?\n\n    opts = opts or {}\n    local keep_last = opts.keep_last or 1\n    local preserve_tilde = opts.preserve_tilde ~= false\n    local preserve_dot_segments = opts.preserve_dot_segments ~= false\n\n    if path == \"\" or path == \"/\" then\n      return path\n    end\n\n    local is_abs = path:sub(1, 1) == \"/\"\n    local has_trailing = path:sub(-1) == \"/\" and path ~= \"/\"\n\n    local parts = {}\n    for seg in path:gmatch \"[^/]+\" do\n      table.insert(parts, seg)\n    end\n    local n = #parts\n    if n == 0 then\n      return is_abs and \"/\" or \"\"\n    end\n\n    local mapped = fun.iter(parts):enumerate():map(function(i, seg)\n      if i \u003e n - keep_last then\n        return seg\n      end\n\n      if preserve_dot_segments and (seg == \".\" or seg == \"..\") then\n        return seg\n      end\n\n      if preserve_tilde and i == 1 and seg == \"~\" then\n        return seg\n      end\n\n      return seg:sub(1, 1)\n    end)\n\n    local joined = mapped:reduce(function(acc, seg)\n      if acc == \"\" then\n        return seg\n      else\n        return acc .. \"/\" .. seg\n      end\n    end, \"\")\n\n    if is_abs then\n      joined = \"/\" .. joined\n    end\n    if has_trailing then\n      joined = joined .. \"/\"\n    end\n    return joined\n  end\n\n  return FP\nend)()\n```\n\n\u003c/details\u003e\n\n\u003c/summary\u003e\n\n## Coming soon\n\n- [ ] Detailed technical decisions breakdown\n- [ ] More documentation (e.g. keymaps) and extended [**Further Customization**](#further-customization) section. \n\n# License\n\nThe MIT License.\n\n[bob]: https://github.com/MordechaiHadad/bob \n[fzf]: https://github.com/junegunn/fzf\n[ripgrep]: https://github.com/BurntSushi/ripgrep\n[bat]: https://github.com/sharkdp/bat\n[fd]: https://github.com/sharkdp/fd\n[lstr]: https://github.com/bgreenwell/lstr\n[lua]: https://lua.org/\n[gh]: https://cli.github.com/\n[luafun]: https://luafun.github.io/ \n[oil]: https://github.com/stevearc/oil.nvim \n[ghostty]: https://ghostty.org/\n[berkeleymono]: https://usgraphics.com/products/berkeley-mono\n[usgraphics]: https://usgraphics.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneg4n%2Fthe-golden-vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneg4n%2Fthe-golden-vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneg4n%2Fthe-golden-vim/lists"}