{"id":28739300,"url":"https://github.com/gtwy/lazyjim","last_synced_at":"2026-04-20T19:05:30.227Z","repository":{"id":295824506,"uuid":"991362282","full_name":"gtwy/lazyjim","owner":"gtwy","description":"personal configs for neovim using the lazy package manager","archived":false,"fork":false,"pushed_at":"2025-06-07T16:41:05.000Z","size":37,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-16T06:02:46.727Z","etag":null,"topics":["lazyvim","nvim","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/gtwy.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}},"created_at":"2025-05-27T14:06:16.000Z","updated_at":"2025-06-07T16:41:08.000Z","dependencies_parsed_at":"2025-05-27T15:29:39.829Z","dependency_job_id":"49e06602-64f6-4a30-886d-6393dbad02be","html_url":"https://github.com/gtwy/lazyjim","commit_stats":null,"previous_names":["gtwy/lazyjim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gtwy/lazyjim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtwy%2Flazyjim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtwy%2Flazyjim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtwy%2Flazyjim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtwy%2Flazyjim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gtwy","download_url":"https://codeload.github.com/gtwy/lazyjim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtwy%2Flazyjim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32061266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["lazyvim","nvim","vim"],"created_at":"2025-06-16T06:00:40.146Z","updated_at":"2026-04-20T19:05:30.222Z","avatar_url":"https://github.com/gtwy.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lazyjim\n\nAfter 15 years of using a heavily customized Vim setup, my plugins had fallen out of date. Rather than updating them piecemeal, I decided to switch to Neovim.\n\nI initially tried LazyVim, but found that some of its defaults - like aggressive autocompletion and automatic bracket closures - didn’t suit my workflow. So I wiped my config and rebuilt from scratch using just the `lazy.nvim` plugin manager.\n\nThis repo documents my personal Neovim configuration. It's tailored to my preferences, but feel free to explore, use, or suggest improvements.\n\n## 🧰 Tech Stack\n\nThis Neovim config is built from scratch using [lazy.nvim](https://github.com/folke/lazy.nvim) as the plugin manager. It favors a minimalist, scriptable, and fast editing environment without the heavy abstractions of prebuilt frameworks like LazyVim.\n\n### ⚙️ Plugin Manager\n\n- [`folke/lazy.nvim`](https://github.com/folke/lazy.nvim) — minimal, fast, Lua-based plugin manager\n  - Bootstrapped automatically on first launch\n  - Plugin modules are declared in `lua/plugins/`\n\n### 🎨 UI \u0026 UX Plugins\n\n| Plugin                          | Purpose                               |\n| ------------------------------- | ------------------------------------- |\n| `rose-pine/neovim`              | Elegant, dark colorscheme _(default)_ |\n| `rebelot/kanagawa.nvim`         | Soft, slate colorscheme               |\n| `AlexvZyl/nordic.nvim`          | Light blue colorscheme                |\n| `nvim-lualine/lualine.nvim`     | Statusline with icons and theming     |\n| `akinsho/bufferline.nvim`       | Visual buffer tabline                 |\n| `nvim-tree/nvim-web-devicons`   | Filetype icons                        |\n| `folke/which-key.nvim`          | Popup keybinding hints                |\n| `echasnovski/mini.icons`        | Optional icon enhancements            |\n| `folke/snacks.nvim`             | Scratchpad and Git UI tools           |\n| `nvim-telescope/telescope.nvim` | File browser, fuzzy file, finder tool |\n| `folke/persistence.nvim`        | Automated session management          |\n\n### 🔤 Syntax \u0026 Treesitter\n\n| Plugin                                                    | Purpose                                       |\n| --------------------------------------------------------- | --------------------------------------------- |\n| `nvim-treesitter/nvim-treesitter`                         | Syntax highlighting via Tree-sitter           |\n| `folke/ts-comments.nvim`                                  | Smarter `gc` comments (requires Neovim 0.10+) |\n| `numToStr/Comment.nvim` + `nvim-ts-context-commentstring` | Context-aware commenting for JSX/HTML/etc.    |\n\n### 🧼 Code Formatting (`conform.nvim`)\n\nUses format-on-save and is fully declarative by filetype.\n\n| Filetype                    | Formatter       |\n| --------------------------- | --------------- |\n| Python                      | `black`         |\n| JavaScript/TS               | `prettier`      |\n| Shell                       | `shfmt`         |\n| PHP                         | `php-cs-fixer`  |\n| Lua                         | `stylua`        |\n| SQL                         | `sql-formatter` |\n| HTML/CSS/JSON/YAML/Markdown | `prettier`      |\n\n\u003e External tools installed via Mason or system packages\n\n### 🚨 Linting (`nvim-lint`)\n\nRuns on `BufWritePost`, manually triggered via `\u003cleader\u003el`\n\n| Filetype      | Linter         |\n| ------------- | -------------- |\n| Python        | `ruff`         |\n| JavaScript/TS | `eslint_d`     |\n| Shell         | `shellcheck`   |\n| PHP           | `php`          |\n| Markdown      | `markdownlint` |\n| JSON          | `jsonlint`     |\n| Lua           | `luacheck`     |\n\n### 🧱 Developer Tools\n\n| Tool                                 | Description                                           |\n| ------------------------------------ | ----------------------------------------------------- |\n| `Mason`                              | Installs formatters/linters (auto-managed on startup) |\n| `Ripgrep` + `fd`                     | Required by snacks.nvim for fuzzy finding             |\n| `Git`                                | Used by snacks' Git integration (`blame_line`)        |\n| `luacheck`, `ruff`, `eslint_d`, etc. | Installed via system or `Mason`                       |\n\n### 🔧 General Settings\n\n- Tabs: 2 spaces, soft tabs, auto/smart indenting enabled\n- Mouse: Toggleable via `\u003cleader\u003em` (default: off)\n- Virtual diagnostics: only show for WARN+ (no inline INFO spam)\n- Disable auto-comment continuation\n- Lint key: `\u003cleader\u003el`\n- File picker: `\u003cleader\u003eff`\n- Grep picker: `\u003cleader\u003efg`\n- Buffer deletion: `\u003cleader\u003ebd`\n- Explorer toggle: `\u003cleader\u003ee`\n- Scratchpad: `\u003cleader\u003ess`\n\n### 🔧 Folder Structure\n\n```text\n~/.config/nvim/\n├── init.lua# Entry point, bootstraps lazy + core config\n└── lua/ ├── config/ # keymaps.lua, settings.lua\n└── plugins/ # plugin modules (treesitter, formatting, etc.)\n```\n\n## 💾 Installation and Prerequisites\n\n### 🔧 Neovim Installation\n\nInstall neovim unstable repo and install from a nightly build. Also includes key packages that will be needed for basic functionality.\n\n```bash\nsudo add-apt-repository ppa:neovim-ppa/unstable\nsudo apt update\nsudo apt install neovim ripgrep fd-find git curl unzip\n```\n\n### 🔗 Aliasing\n\nAdded this to my `~/.bashrc`\n\n```bash\n# I'll never remember to write n before vim\nalias vim='nvim'\nalias vi='/usr/bin/vim'\n```\n\nYou may want to run `which vim` first to see if yours is actually in `/usr/bin/`\n\n### 📦 Lazy.nvim Installation\n\nInstall `lazy.nvim` plugin manager bare bones.\n\n```bash\ngit clone https://github.com/folke/lazy.nvim.git ~/.local/share/nvim/lazy/lazy.nvim\nrm -rf ~/.local/share/nvim/lazy/lazy.nvim/.git\n```\n\nIt installs to `~/.local/share/nvim/lazy/lazy.nvim/`\n\n### 🧪 Prerequisites\n\nThe following packages are needed to enable all functionality in my neovim stack, such as linting, formatting, etc.\n\n```bash\nsudo apt install \\\n  shellcheck \\\n  php-cli \\\n  php-cs-fixer \\\n  lua-check \\\n  nodejs \\\n  npm \\\n  python3-pip \\\n  luarocks\n```\n\nAs a user (not sudo or root), install these for linting and formatting python\n\n```bash\npip install black ruff --break-system-packages\n```\n\nInstall node based formatters and linters\n\n```bash\nsudo npm install -g \\\n  prettier \\\n  eslint_d \\\n  jsonlint \\\n  markdownlint-cli \\\n  sql-formatter\n```\n\nInstall luarocks linter\n\n```bash\nsudo luarocks install luacheck\n```\n\n### 🎨 Nerd Fonts (for Ligatures)\n\nDownload fonts:\n\n- Monaspice Nerd Font\n- FiraCode Nerd Font\n\n[Get them here](https://www.nerdfonts.com/font-downloads)\n\nExtract, right click, `install for all users`\n\n#### Laptop (14\" 1440p)\n\nI'm using `Monaspice Neon Nerd Font Mono` 11-point Regular, with antialiasing enabled.\n\n#### Desktop (27\" 1440p)\n\nI'm using `Monaspice Neon Nerd Font Mono` 12-point Light, with antialiasing enabled.\n\n### Other\n\nIn close second is my second choice, `FiraCode Nerd Font Mono`, which I ran at 11-point regular on both systems.\n\n## 🚀 Install lazyjim\n\n### 📥 Clone Repo\n\nBackup the contents of your existing `.config/nvim` folder if it already exists.\n\n```bash\nmkdir -p ~/.config/nvim/\ngit clone https://github.com/gtwy/lazyjim ~/.config/nvim\n```\n\n### ▶️ Start Neovim\n\nOn first launch, you'll want to make sure Lazy.nvim installs your plugins, Mason installs required tools, and Treesitter downloads its language parsers.\n\nRun the following commands inside neovim\n\n```vim\n:Lazy Sync\n:Mason Update\n:TSUpdate\n```\n\n## 📝 Todo\n\n- Add more functionality to which-key (and keymaps in general)\n- Add toggleable columns with git info, line numbers\n- Find more enhancements to add that don't cause bloat\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtwy%2Flazyjim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgtwy%2Flazyjim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtwy%2Flazyjim/lists"}