{"id":47873716,"url":"https://github.com/gh-tui-tools/gh-review.vim","last_synced_at":"2026-04-19T07:01:02.453Z","repository":{"id":337945931,"uuid":"1155899481","full_name":"gh-tui-tools/gh-review.vim","owner":"gh-tui-tools","description":"🧐 Review GitHub PRs in Vim 9.0+","archived":false,"fork":false,"pushed_at":"2026-03-27T12:44:32.000Z","size":92,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-27T23:38:15.378Z","etag":null,"topics":["code-review","github-cli","github-integration","pull-request-review","review-tools","tui","vim","vim-plugin","vim9script"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gh-tui-tools.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":"2026-02-12T03:03:38.000Z","updated_at":"2026-03-27T12:44:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gh-tui-tools/gh-review.vim","commit_stats":null,"previous_names":["gh-tui-tools/gh-review.vim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gh-tui-tools/gh-review.vim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh-tui-tools%2Fgh-review.vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh-tui-tools%2Fgh-review.vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh-tui-tools%2Fgh-review.vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh-tui-tools%2Fgh-review.vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gh-tui-tools","download_url":"https://codeload.github.com/gh-tui-tools/gh-review.vim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh-tui-tools%2Fgh-review.vim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31997804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":["code-review","github-cli","github-integration","pull-request-review","review-tools","tui","vim","vim-plugin","vim9script"],"created_at":"2026-04-04T01:00:56.407Z","updated_at":"2026-04-19T07:01:02.442Z","avatar_url":"https://github.com/gh-tui-tools.png","language":"Vim Script","funding_links":[],"categories":["Integrations"],"sub_categories":[],"readme":"# gh-review.vim\n\nA Vim 9.0+ plugin for reviewing GitHub pull requests entirely within Vim.\n\nSide-by-side diffs, review threads, code suggestions, and review submission — all driven by the `gh` CLI.\n\nAlso available for Neovim: [gh-review.nvim](https://github.com/gh-tui-tools/gh-review.nvim).\n\n## Goal\n\nThis plugin — which is designed for the use case where you’ve already identified a specific PR or PR branch you’re ready to review — has just one single goal:\n\n✅ provide the simplest means possible for performing a GitHub PR review within Vim\n\nAnything beyond that is a non-goal — for example:\n\n❌ GitHub Issues, Notifications, Discussions, or Actions/Workflows\\\n❌ Managing labels, assignees, or requested reviewers\\\n❌ Browsing or searching lists of PRs\\\n❌ Merging or closing PRs\n\nYou are expected to perform those tasks using other tooling (for example, [gh-dash](https://github.com/dlvhdr/gh-dash)).\n\n## Requirements\n\n- Vim 9.0 or later\n- [`gh` CLI](https://cli.github.com), authenticated\n\n## Installation\n\nWith Vim’s built-in package manager:\n\n```sh\nmkdir -p ~/.vim/pack/plugins/start\ncd ~/.vim/pack/plugins/start\ngit clone https://github.com/gh-tui-tools/gh-review.vim.git\n```\n\nWith [vim-plug](https://github.com/junegunn/vim-plug):\n\n```vim\nPlug 'gh-tui-tools/gh-review.vim'\n```\n\n## Workflows\n\nThe plugin has two main workflows: A “checkout” workflow, and a “no-checkout” workflow.\n\n### Checkout workflow\n\nTypically used by a project maintainer reviewing a contributor’s PR. The branch is checked out locally so the reviewer can make edits, commit fixes, and push directly.\n\n```vim\n:GHReview 123          \" PR number (checks out the branch)\n:GHReview              \" auto-detect from current branch\n```\n\n- The right/head diff buffer is editable — `:w` writes to the working tree.\n- External file changes are detected and the plugin prompts to reload.\n- `git push` pushes changes back to the PR branch (works for fork PRs too).\n\n### No-checkout workflow\n\nTypically used by a non-maintainer reviewer who only needs to read the diff and leave comments.\n\n```vim\n:GHReview https://github.com/owner/repo/pull/123\n```\n\nWhen the URL refers to a different repo than the current working directory, no checkout is attempted. The right/head diff buffer is read-only, but comments, suggestions, and review submission all work normally.\n\n## Quick start\n\n```\n:GHReview 123           Open PR #123\n\u003cCR\u003e                    Open a file’s side-by-side diff\n]t / [t                 Jump between review threads\ngt                      View a thread\nK                       Preview a thread (floating popup)\ngc                      Add a comment\ngF                      Jump to the file (checkout only)\ng?                      Show keymap help\n:GHReviewSubmit         Submit a review\n:GHReviewClose          Close all review buffers\n```\n\n## Commands\n\n| Command            | Description                                                   |\n|--------------------|---------------------------------------------------------------|\n| `:GHReview`        | Open a PR (auto-detect, by number, or by URL)                 |\n| `:GHReviewFiles`   | Toggle the changed files list                                 |\n| `:GHReviewStart`   | Start a pending review (optional — `:GHReviewSubmit` works without it) |\n| `:GHReviewSubmit`  | Submit a review (Comment / Approve / Request changes)         |\n| `:GHReviewDiscard` | Discard the pending review and all its pending comments       |\n| `:GHReviewClose`   | Close all review buffers and reset state                      |\n\n## Diff mappings\n\n| Key   | Action                                               |\n|-------|------------------------------------------------------|\n| `gt`  | Open the review thread at the cursor line             |\n| `gc`  | Create a new comment (visual mode: multi-line)        |\n| `gs`  | Create a suggestion (right buffer only, visual: range)|\n| `]t`  | Jump to the next review thread                        |\n| `[t`  | Jump to the previous review thread                    |\n| `K`   | Preview the thread at cursor (floating popup)         |\n| `gf`  | Toggle the files list                                 |\n| `gF`  | Go to file at cursor line (checkout only)              |\n| `q`   | Close the diff view                                   |\n| `g?`  | Show keymap help                                      |\n\n## Thread mappings\n\n| Key      | Action                                        |\n|----------|-----------------------------------------------|\n| `Ctrl-S` | Submit the reply                              |\n| `Ctrl-R` | Toggle resolved/unresolved                    |\n| `q`      | Close the thread buffer                       |\n| `Ctrl-Q` | Close the thread buffer (works in insert mode)|\n| `g?`     | Show keymap help                              |\n| `Ctrl-X Ctrl-O` | Complete `@`-mention from thread participants |\n\n## Signs and virtual text\n\n| Sign | Meaning                          |\n|------|----------------------------------|\n| `CT` | Comment thread (blue)            |\n| `CR` | Resolved thread (green)          |\n| `CP` | Pending review comment (yellow)  |\n\nEach sign is accompanied by virtual text at end-of-line showing the first comment’s author and a truncated body — giving at-a-glance context without opening the thread.\n\nComment reactions are displayed as emoji with counts after each comment body in the thread buffer and floating preview.\n\n## Prompts\n\nAll prompts (submit review, discard review, checkout, file reload) use `popup_menu()` and `confirm()` for a modern UI — no raw `inputlist()` or `input()`.\n\n## Statusline\n\n```vim\n\u0026statusline ..= '%{gh_review#Statusline()}'\n```\n\nReturns `\"\"` when no review is active, or a summary like `PR #42 · reviewing · 4 threads`.\n\n## Comparison with other plugins\n\ngh-review.vim shares its design with [gh-review.nvim][], its Neovim counterpart. There does not appear to be any other existing Vim plugin for performing GitHub PR reviews — but several Neovim plugins provide PR review features.\n\n| Feature                          | gh-review.vim       | [gh-review.nvim][]  | [ghlite.nvim][]     | [gh.nvim][]         | [octo.nvim][]       |\n|----------------------------------|---------------------|---------------------|---------------------|---------------------|---------------------|\n| **Platform**                     | Vim 9.0+            | Neovim 0.10+        | Neovim 0.10+        | Neovim              | Neovim 0.10+        |\n| **PR review: side-by-side diff** | Yes                 | Yes                 | Via diffview.nvim   | Yes                 | Yes                 |\n| **PR review: comments/threads**  | Yes                 | Yes                 | Yes                 | Yes                 | Yes                 |\n| **PR review: code suggestions**  | Yes                 | Yes                 | No                  | No                  | Yes                 |\n| **PR review: submit review**     | Yes                 | Yes                 | Yes                 | Yes                 | Yes                 |\n| **PR review: resolve threads**   | Yes                 | Yes                 | No                  | Yes                 | Yes                 |\n| **PR review: thread signs**      | Yes (+ virtual text)| Yes (+ virtual text)| As diagnostics      | No                  | No                  |\n| **Editable diff buffers**        | Yes                 | Yes                 | No                  | Yes (via checkout)  | No                  |\n| **External change detection**    | Yes                 | Yes                 | No                  | No                  | No                  |\n| **Fork PR push tracking**        | Yes                 | Yes                 | No                  | Yes                 | No                  |\n| **PR listing/browsing**          | No (non-goal)       | No (non-goal)       | Yes                 | Yes                 | Yes                 |\n| **Merge PRs**                    | No (non-goal)       | No (non-goal)       | Yes                 | No                  | Yes                 |\n| **Labels/assignees/reviewers**   | No (non-goal)       | No (non-goal)       | No                  | No                  | Yes                 |\n| **GitHub Issues**                | No (non-goal)       | No (non-goal)       | No                  | Yes                 | Yes                 |\n| **Notifications**                | No (non-goal)       | No (non-goal)       | No                  | Yes                 | Yes                 |\n| **Discussions**                  | No (non-goal)       | No (non-goal)       | No                  | No                  | Yes                 |\n| **Actions/Workflows**            | No (non-goal)       | No (non-goal)       | No                  | No                  | Yes                 |\n| **Reactions**                    | No (non-goal)       | No (non-goal)       | No                  | No                  | Yes                 |\n| **Dependencies**                 | `gh` CLI            | `gh` CLI            | `gh` CLI            | `gh` CLI, litee.nvim| `gh` CLI, plenary.nvim, picker |\n\n[gh-review.nvim]: https://github.com/gh-tui-tools/gh-review.nvim\n[ghlite.nvim]: https://github.com/daliusd/ghlite.nvim\n[gh.nvim]: https://github.com/ldelossa/gh.nvim\n[octo.nvim]: https://github.com/pwntester/octo.nvim\n\n## Documentation\n\nSee `:help gh-review` for full documentation.\n\nSee [DESIGN.md](DESIGN.md) for architecture and implementation details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgh-tui-tools%2Fgh-review.vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgh-tui-tools%2Fgh-review.vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgh-tui-tools%2Fgh-review.vim/lists"}