A local code review tool for Neovim. Review diffs, add comments, and export Markdown — all inside your editor with zero plugin dependencies.
This project is inspired by ReviewIt - a fantastic code review tool. We created this Neovim-specific implementation with deep respect for the original work.
- Split diff view — Side-by-side old/new comparison with syntax highlighting
- File tree sidebar — Browse changed files, track review progress
- Line-level comments — Floating input window, supports multi-line ranges
- Session management — Named sessions persisted as JSON, pause and resume anytime
- Markdown export — Copy review output to clipboard, ready for coding agents
- Context-aware commands — Only relevant commands are available at each stage
- Zero dependencies — Requires only Neovim >= 0.10.0 and Git
- Neovim >= 0.10.0
- Git
Using lazy.nvim
{
"KEY60228/reviewthem.nvim",
config = function()
require("reviewthem").setup()
end,
}Using packer.nvim
use {
"KEY60228/reviewthem.nvim",
config = function()
require("reviewthem").setup()
end,
}-
Start a review session
:ReviewThemStart main feature-branchOr review uncommitted changes:
:ReviewThemStart
This opens a three-pane layout: file tree | old diff | new diff.
-
Browse and comment
- Select files in the file tree sidebar
- Press
<leader>rcon a diff line to add a comment - Use visual mode for multi-line comments
-
Track progress
- Press
rin the file tree to mark files as reviewed - Progress is shown at the bottom of the file tree
- Press
-
Submit your review
:ReviewThemSubmit
Copies a Markdown summary to your clipboard.
-
Pause and resume
:ReviewThemPause
Later, resume with
:ReviewThemSessions.
Commands are context-aware — session management commands are only available when no review is active, and review commands are only available during an active session.
| Command | Description |
|---|---|
:ReviewThemStart [base] [compare] [--name=X] |
Start a new review session |
:ReviewThemSessions |
List sessions (Enter=resume, d=delete) |
| Command | Description |
|---|---|
:ReviewThemAddComment |
Add comment to current line/selection |
:ReviewThemEditComment |
Edit comment at cursor position |
:ReviewThemDeleteComment |
Delete comment at cursor position |
:ReviewThemShowComments |
List all comments (Enter=jump, d=delete) |
:ReviewThemToggleReviewed |
Toggle reviewed status of current file |
:ReviewThemSubmit |
Export Markdown to clipboard and close |
:ReviewThemPause |
Close UI, keep session saved |
:ReviewThemAbort |
Discard session |
:ReviewThemTree |
Toggle file tree sidebar |
Default mappings in diff buffers (customizable in setup):
| Mapping | Description |
|---|---|
<leader>rc |
Add comment (normal and visual mode) |
<leader>rs |
Submit review |
<leader>rv |
Toggle file reviewed status |
<leader>rl |
Show all comments |
<leader>re |
Focus file tree |
<leader>rq |
Pause / close review |
Comment input window:
| Mapping | Description |
|---|---|
<A-CR> |
Confirm comment |
<Esc> |
Cancel |
File tree sidebar:
| Mapping | Description |
|---|---|
<CR> |
Open file / toggle directory |
r |
Toggle reviewed status |
q |
Close file tree |
All options are optional — defaults are shown below:
require("reviewthem").setup({
comment_sign = "💬", -- sign shown on commented lines
file_tree_width = 30, -- sidebar width in columns
auto_save = true, -- auto-save session on changes
keymaps = {
add_comment = "<leader>rc",
confirm_comment = "<A-CR>",
cancel_comment = "<Esc>",
submit_review = "<leader>rs",
toggle_reviewed = "<leader>rv",
show_comments = "<leader>rl",
focus_tree = "<leader>re",
close_review = "<leader>rq",
},
}):checkhealth reviewthemMIT License - see LICENSE for details.
- ReviewIt - The original ReviewIt tool that inspired this Neovim plugin
- Oh My Logo - The tool used to create our logo
